当前位置:首页 > 黑客业务 > 正文内容

逆向入门分析实战(五)

访客4年前 (2021-04-18)黑客业务583

本文首发于“合天智汇” 作者:xiaoyuer

本次是实现一个木马下载器(Trojan Downloader),从某个指定的URL中下载一个文件,并将其在后台偷偷运行起来。主要使用的API函数是URLDownloadToFile和WinExec。

这次分两步开发,第一步开发一个复制自身到C盘windows目录的程序,然后再开发一个木马下载器,同时进行逆向分析。

一、开发复制自身的程序

VC6.0默认情况下代码高亮效果不好,安装VC++6.0助手后效果会变好很多,当然也可以使用visual studio。这个看个人喜好。

这段代码首先定义了一个copyself的函数,在copyself函数中首先定义了三个变量,其中前两个变量的数组长度为MAX_PATH,它是一个宏定义,大小为260。之后调用GetModuleFileName这个API函数,将当前运行程序的文件路径存入之前定义好的szSelfFileName变量,同理获得windows的路径。之后使用strcat函数将windows路径与“\\backdoor.exe”拼接,之后使用CopyFile将自身复制到C:\windows\backdoor.exe。

运行效果:

查看运行前后的C盘windows内容:

运行后发现多了一个backdoor.exe。

二、逆向分析复制自身的程序

使用ida打开,发现会弹出该对话框:

这是pdb调试文件,这是开发的时候发布的为debug版。如果修改为release版就没有pdb文件了:

这个pdb文件通常有时可以作为一个特征来筛选一个恶意软件,有时还会被设置IOC情报。所以有时需要关注pdb的相关信息。

main函数:

双击进入第一个call,这个call对应的就是copyself函数:

由于汇编语言太长,这里用VC6.0调试界面来展示:

直接看0040103E处开始的汇编语言,乍一看很复杂,看不懂。其中rep stos指令是repeat和store string的缩写,它循环执行stos指令,循环次数由ecx控制。stos的作用是将eax中的值复制到es:edi指向的地址。再看0040103E处的汇编语言就清晰易懂了,先给ebp-104h赋值0,给ecx赋值40h(十进制的64),然后eax清零,之后edi设置为ebp-103h,使用rep stos指令循环64次将eax赋值给edi指向的地址,由于是以dword进行循环,所以一共64*4=256个字节,再加上0040103E处的1个字节,加上0040105和00401056处,1+256+2+1=260个字节,刚好等于MAX_PATH。

之后查看GetModuleFileName对应的汇编语言:

三个参数从右往左,第一个参数104h为十进制的260,第二个参数eax为初始化的变量ebp-104h,对应的是szSelfFileName,第三个参数为0,之后调用GetModuleFileName API函数。

使用VC6.0和使用ida的结果进行对比,虽然看起来不是很一样,但本质都是一样的。同理接下来调用GetWindowsDirectory,strcat和CopyFileA。对应的汇编基本上都相对容易看懂,此处就不再过多赘述了。之后就是if和else为一个分支判断:

最终结束运行。

三、开发木马下载器

C语言代码如下:

由于URLDownloadToFile需要Urlmon.lib,所以需要使用#pragma comment (lib,"urlmon")。URLDownloadToFile关键参数有两个,一个是要访问的URL,一个是要保存的文件路径。之后使用winexec函数运行下载后的程序,代码的实现很简单,主要就是两个api的调用。

使用另外一个机子,作为服务器,它的IP也就是URLDownloadToFile中的URL,我们将第一步开发的程序改名为test2.jpg,上传到该服务器上,然后使用如下命令开启web服务:

然后执行编译后的程序:

下载成功,并且会将其复制到c盘windows目录下。这里需要注意的是,需要先删除第一步复制自身到windows目录的程序执行后生成的backdoor.exe,否则会报错,错误码为80,使用VC6.0的工具查询:

四、逆向分析木马下载器

与之前类似,使用rep movs指令对一个数组循环赋值:之所以将ecx赋值为7,是因为我这里整个URL为28个字符。然后对剩余的全部赋值为0。

再调用URLDownloadToFile,然后使用cmp对比返回结果与800C0008h:

那么为什么要与800C0008h这个常量对比呢?按照我们开发时是INET_E_DOWNLOAD_FAILURE,当URLDownloadToFile返回结果为它时表示下载失败:

使用ida可以将其转换回来,操作步骤如下:选中这个常量,然后右键:

然后便弹出这个:

选中合适的符号命名常量,然后点击OK即可:

然后执行WinExec:

其中push 5为WinExec的第二个参数,使用同样的方法将其转换为常量:

转换后为SW_SHOW,与我们开发的一样。

五、总结:

这次实现了木马下载器,思路和实现很简单,主要就是调用URLDownloadToFile和WinExec函数。被下载的木马主要是调用了GetModuleFileName和CopyFile等函数将自身复制到windows目录。目前市面上的杀软应该都会对URLDownloadToFile这些敏感的函数进行查杀,所以本次案例仅供学习逆向分析使用。

六、相关实验

IDA逆向分析实例

实验:IDA逆向分析实例(合天网安实验室)

本实验首先通过一个简单的破解实验和大家一起熟悉逆向工具的使用,接着借助一道0Ctf中的逆向题目和大家一起对一个二进制程序进行逆向分析

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:https://therlest.com/105227.html

分享给朋友:

“逆向入门分析实战(五)” 的相关文章

什么时候立秋

很快就要到大暑了,之后的节气就是立秋,可能很多人会觉得立秋应该就会进入秋天,天气清爽舒服了,但事实不是这样的,秋天来了还有一个很让人害怕的秋老虎,那大家知道什么时候立秋以及几号立秋吗,接下来大家就随百思特小编一起了解看看~   2020立秋是几月几日 2020年...

华流芒种是几月几号农历

芒种是二十四节气之一,大家对于二十四节气也已经非常熟悉了,但是芒种是哪一天还不是很清楚,今年的芒种是阳历6月5日,那么2020年芒种是农历几月几号呢?接下来我们就一起了解一下吧。     2020年芒种是农历几月几号...

字节承认商业化团队撤城裁员

据晋江新闻网2021年10月19日21:00:43的最新发布,微博网友@ 爆料。 平安夜来临之际,事件,在网上炒得沸沸扬扬,引发全网热议! 据悉,黑客追款后来被报道了几次。猜测第六百八十八章逃港者第六百八十九章调侃第六百。相对这个账号是他的。 1.专业网赌追回律师 首先确保整个真正的黑客追款方案是最...

猪肉怎么选?颜色有区别吗?今天做饭的时候发现上次买的猪肉颜色跟这

猪肉怎么选?颜色有区别吗?今天做饭的时候发现上次买的猪肉颜色跟这 买猪肉时,根据肉的颜色、外观、气味等可以判断出肉的质量是好还是坏。优质的猪肉,脂肪白而硬,且带有香味。肉的外面往往有一层稍带干燥的膜,肉质紧密,富有弹性,手指压后凹陷处立即复原。 次鲜肉肉色较鲜肉暗,缺乏光泽,脂肪呈灰白色;表面带...

存储过程oracle(oracle财务系统)

推荐教程:甲骨文教程 本文主要介绍甲骨文中的数据转换。 1.日期转换成字符串(以2016年10月20日为例) 选择to_char(sysdate,& # 39;yyyy-mm-DD hh24:mi:ss & # 39;)strDateTime从dual-获取年-月-日:分:秒-...

书黑客,黑客软件破解吃鸡,网站黑客攻击工具

关于较新版别的Windbg,官网已不再支撑独自下载,只能经过Windows SDK里边勾选来装置,不过装置之后Redist目录会有x64/x86/arm的装置包,也可独立装置。 此次评选活动的意图在于,在安全社区中宣扬这些技能,让职业进步对安全的注重,一起也能让这些技能能遭到认可和铭记。 因而,根据...

评论列表

晴枙矫纵
3年前 (2022-05-29)

rep stos指令循环64次将eax赋值给edi指向的地址,由于是以dword进行循环,所以一共64*4=256个字节,再加上0040103E处的1个字节,加上0040105和00401056处,1+256+2+1=260个字节,刚好等于

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。