距离省考宣布寄了已经过去了两个月了
于是打了两个月的游戏,属实是打吐了
出来去原来的单位实习
上来就是分析病毒
在摸索的过程中产生了这篇文章
0x00 Wireshark
尝试抓包恶意软件
开启Wireshark,运行恶意程序,全是HTTPS的数据
看了下网上的资料可以设置环境变量$SSLKEYLOGFILE
来设置SSL密钥临时文件的位置,然后在Wireshark里导入
1 | export SSLKEYLOGFILE=/tmp/tls.log |
Edit→ Preferences → Protocols → TLS → (Pre-)Master-Secret log filename
选择环境变量$SSLKEYLOGFILE
的内容
1 | curl https://www.baidu.com/ |
即可$SSLKEYLOGFILE
中看到HTTPS的密钥
Wireshark中也可以看到解密的HTTPS流量
但是运行恶意程序,恶意程序发起的HTTPS请求后并不会在$SSLKEYLOGFILE
写入密钥
所以这个方法行不通
有想到过自己看TLS的密钥协商过程,写个脚本来计算出Master Secret Key,然后导入Wireshark来解密已保存的流量,但水平有限写不出来
好吧,正常情况
0x01 Burpsuite
将Burpsuite证书设置为系统证书(与这篇文章类似)
1 | burpsuite& |
设置系统代理
1 | export http_proxy="http://127.0.0.1:8080/" |
命令行里的curl和python都能被抓到https的数据包
但是恶意软件的流量抓不到
使用proxychains代理
1 | apt-get install proxychains |
(配置文件/etc/proxychains.conf
好像默认有一个socks4的代理?自己看着删掉吧)
但是恶意软件的流量还是抓不到
大概是这个恶意程序设置的是不走系统的代理吧,只能说开发人员有点水平
0x02 Fiddler Everywhere
想着在Fiddler上抓一下全局流量,结果Fiddler4在linux上面用不了,只能用mono运行一个老版本
还是用Fidder Everywhere吧
1 | wget https://downloads.getfiddler.com/linux/fiddler-everywhere-3.2.0.AppImage |
注册,登录,“Your 30-day free trial has expired!”
看来是得破解一下了
网上逛逛找到了个补丁
1 | fiddler-everywhere-3.2.0.AppImage --appimage-extract |
Fiddler.WebUi.dll
在./squashfs-root/resources/app/out/WebServer/
main.3f983221e4e1aade.js
在./squashfs-root/resources/app/out/WebServer/ClientApp/dist/
替换完成后进行打包
1 | wget https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage |
卡在"Please Wait"界面,寄
根据这篇博客[Linux]破解抓包软件FiddlerEverywhere 3.2.0 cracked用dnspy改FiddlerBackendSDK.dll文件
1 | //raw |
改成这样重打包dll,替换原dll后重打包appimage
运行后还是卡在"Please Wait"界面,寄
浪费了大半天的时间混了大半天
0x03 Polarproxy
之前想着恶意程序既然能够绕过系统代理,那我把网卡的流量用iptables整个重定向到Burpsuite不就行了
但是实际上还是不行,自己大概思考了一下,这玩意估计把TCP握手的流量也丢给Burpsuite了,Burpsuite估计是处理不了TCP流量,然后就寄了(未验证)
混了大半天,突然脑子有个想法,google上搜了一下"how to decrypt malware https traffic"
然后第一个结果就介绍了PolarProxy这个工具,去官网看了一下
1 | PolarProxy is a transparent SSL/TLS proxy created for incident responders and malware researchers. PolarProxy is primarily designed to intercept and decrypt TLS encrypted traffic from malware. PolarProxy decrypts and re-encrypts TLS traffic, while also saving the decrypted traffic in a PCAP file that can be loaded into Wireshark or an intrusion detection system (IDS). |
看来自己是找对东西了
这玩意得单独用个用户运行,不然到时候iptables重定向会跟这玩意整个死循环出来
安装并启用
1 | sudo adduser --system --shell /bin/bash proxyuser |
配置系统证书
1 | sudo mkdir /usr/share/ca-certificates/extra |
启用extra /PolarProxy-root-CA.crt
即可
配置iptables
1 | iptables -t nat -A OUTPUT -m owner --uid 0 -p tcp --dport 443 -j REDIRECT --to 10443 |
运行恶意程序后在目录/var/log/PolarProxy/
中可以看到程序捕获并解密的HTTPS流量
使用wireshark打开即可
普通用户运行恶意程序没啥反应,用root运行才抓到包
顺带一提,这个程序默认每天解密10GB的HTTPS的流量或10000次SESSION,但是够用了
0x04 ecapture
https://github.com/ehids/ecapture
看ebpf rootkit的时候看到了一个基于ebpf的monitor
能检测bash和解密https
解密的大概思路是hook一些ssl库,对于tls层可以直接获取http请求与响应
也就意味着这玩意甚至能免除用于MITM的CA
但是缺点也很明显
1 | ldd ./apache2 |