社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 6731阅读
  • 3回复

[分享]恶意代码分析

楼层直达
z3960 
级别: 茶馆馆主
发帖
770593
飞翔币
207694
威望
215657
飞扬币
2511651
信誉值
8

[font=-apple-system, BlinkMacSystemFont, &quot]实验二 动态分析实践[font=-apple-system, BlinkMacSystemFont, &quot]【实验目的和要求】[font=-apple-system, BlinkMacSystemFont, &quot]熟悉OllyDbg[font=-apple-system, BlinkMacSystemFont, &quot]和IDA Pro的使用,用其分析恶意文件,分析DLL文件的导入过程;分析DLL提供的函数的具体功能;熟悉API函数功能及其涉及到的参数理解;分析netschedulejobadd、at_info。[font=-apple-system, BlinkMacSystemFont, &quot]【实验工具】[font=-apple-system, BlinkMacSystemFont, &quot]PeEdtior、OllyDbg、IDA Pro等[font=-apple-system, BlinkMacSystemFont, &quot]【实验步骤】[font=-apple-system, BlinkMacSystemFont, &quot]1、样本导入了哪些 DLL?[font=-apple-system, BlinkMacSystemFont, &quot]一共六个:KERNEL32.dll;NETAPI32.dll;DLL1.dl1;DLL2.dll;DLL3.dll;user32.dll[font=-apple-system, BlinkMacSystemFont, &quot]直接查看到四个:[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]往下翻,看到DLL3.dll,带着个LoadLibraryA。于是接着找别的LoadLibraryA,能够看到还有个user32.dll[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]2、DLL1.dll、DLL2.dll、 DLL3.dll要求的基地址分被是多少?[font=-apple-system, BlinkMacSystemFont, &quot]都是10000000[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]3、DLL3.dll导入方式和前面2个DLL有何不同?[font=-apple-system, BlinkMacSystemFont, &quot]DLL3.dll是显式链接,执行过程中实时加载,执行完后卸载。前面两个是隐式链接,一开始就加载到了内存中。[font=-apple-system, BlinkMacSystemFont, &quot]4、当使用OllyDbg调试样本时,为DLL1.dll、DLL2.dll、 DLL3.dll 分配的基地址是什么?是否符合第2步DLL声明的基地址相同?为什么出现这种情况?[font=-apple-system, BlinkMacSystemFont, &quot](OD查看-内存)[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]00590000,005C0000,10000000;不同;进行了基地址重定位,因为他们预设的基地址都是10000000.[font=-apple-system, BlinkMacSystemFont, &quot]5、样本调用DLL1.dll中的一个导入函数,该函数名称是什么?[font=-apple-system, BlinkMacSystemFont, &quot]KERNEL32.dll[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]6、分析该函数功能。(提示:分析该导入函数用到的参数及该函数调用的其他函数,如分析[font=-apple-system, BlinkMacSystemFont, &quot]GetCurrentProcessId[font=-apple-system, BlinkMacSystemFont, &quot]函数功能。)DLL1打印的数据是什么?[font=-apple-system, BlinkMacSystemFont, &quot]GetCurrentProcessId作用:获取当前进程一个唯一的标识符打印的数据:47600(pid)里面的指令,以及对应语句执行的寄存器状态:[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]6.1样本调用了[font=-apple-system, BlinkMacSystemFont, &quot]WriteFile[font=-apple-system, BlinkMacSystemFont, &quot]函数,分析WriteFile函数功能及其参数。[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]WriteFile函数功能:从文件指针指向的位置开始将数据写入到一个文件中, 如果文件打开方式没有指明FILE_FLAG_OVERLAPPED的话,当程序调用成功时,它将实际写入文件的字节数保存到lpNumberOfBytesWriten指明的地址空间中参数:HANDLE  hFile,//文件句柄LPCVOID lpBuffer,//数据缓存区指针DWORD   nNumberOfBytesToWrite,//你要写的字节数LPDWORD lpNumberOfBytesWritten,//用于保存实际写入字节数的存储区域的指针LPOVERLAPPED lpOverlapped//OVERLAPPED结构体指针[font=-apple-system, BlinkMacSystemFont, &quot]6.2当样本调用WriteFile函数时,它写入的文件名是什么,写入该文件的内容是什么?(提示:结合[font=-apple-system, BlinkMacSystemFont, &quot]样本[font=-apple-system, BlinkMacSystemFont, &quot]及[font=-apple-system, BlinkMacSystemFont, &quot]样本导入的DLL2.dll[font=-apple-system, BlinkMacSystemFont, &quot]进行分析;找到某个地址,分析不同函数对其引用;IDA中,选中某个地址,然后快捷键X键,可以显示引用于该地址的函数地址)DLL2打印的数据是什么?[font=-apple-system, BlinkMacSystemFont, &quot]要想知道WriteFile函数写入的文件名是什么,只要找到参数里的文件句柄就好。可以看到,这里的ecx存着hFile,观察前面的语句能够知道,这里的ecx肯定和DLL2ReturnJ的返回值有关。[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]于是我们打开DLL2.dll,找到DLL2ReturnJ函数[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]不难发现,这里的dword_1000B078就是返回值,我们找找看这个值[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]跟进第一个就能看到,CreateFileA这个函数创建了个temp.txt文件,[font=-apple-system, BlinkMacSystemFont, &quot]即CreateFileA函数写入的文件名为temp.txt。[font=-apple-system, BlinkMacSystemFont, &quot]如果CreateFileA成功的话,会返回一个打开的指定文件的句柄 ,这里是存在eax里面的,所以dword_1000B078就是存的temp.txt这个文件的句柄。[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]OD调试运行一下,打开创建的temp.txt文件,就能看到写入的内容了:[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]我们在IDA里面找到DLL2Print这个函数,能够发现这里压的两个参数eax和"DLL 2 mystery data %dn"。[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]于是在OD里面调试一下,看看eax是什么[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]16进制里100就是256。[font=-apple-system, BlinkMacSystemFont, &quot]所以DLL2Print打印的就是eax的值,也就是文件的句柄。[font=-apple-system, BlinkMacSystemFont, &quot]7.1当样本使用[font=-apple-system, BlinkMacSystemFont, &quot]NetScheduleJobAdd[font=-apple-system, BlinkMacSystemFont, &quot]创建一个job时,从哪里获取第二个参数的数据?从这里获取什么信息?[font=-apple-system, BlinkMacSystemFont, &quot]找到NetScheduleJobAdd这个函数,我们能看到第二个参数是Buffer,被存放在ecx里面,是指向AT_INFO结构的指针。这里是将[ebp+Buffer]的值付给了ecx,不过我们并不知道这个值是多少,于是找到上面的DLL3GetStructure函数,对DLL3进行调试。[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]找到DLL3GetStructure,发现他用eax存放返回值stru_1000B0A0,于是找一下stru_1000B0A0的值。[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]找到stru_1000B0A0后,添加结构体AT_INFO,然后点击Edit下的Struct var,再看的话能够识别出该结构体。[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]所以NetScheduleJobAdd函数的第二个参数来自DLL3中的DLL3GetStructure函数。[font=-apple-system, BlinkMacSystemFont, &quot]7.2 DLL3打印的数据是什么?[font=-apple-system, BlinkMacSystemFont, &quot]找到DLL3Print函数,发现有两个参数,我们找一下offset WideCharStr[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]MultiByteToWideChar函数将字符串映射到 UTF-16(宽字符)字符串,10001004处将ping www.malwareanalysisbook.com在内存中的偏移地址保存,然后利用MultiByteToWideChar函数将刚才的偏移地址进行字符串转换,返回值既是WideCharStr。[font=-apple-system, BlinkMacSystemFont, &quot][font=-apple-system, BlinkMacSystemFont, &quot]DLL3打印的是ping www.malwareanalysisbook.com在内存中的地址。[font=-apple-system, BlinkMacSystemFont, &quot]【实验小结】 扩展知识:https://docs.microsoft.com/en-us/windows/win32/api/lmat/nf-lmat-netschedulejobaddhttps://docs.microsoft.com/en-us/windows/win32/api/lmat/ns-lmat-at_info
本帖最近评分记录: 1 条评分 飞扬币 +50
爱我中华 飞扬币 +50 2022-06-09 社区因为有您的参与更精彩!
我不喜欢说话却每天说最多的话,我不喜欢笑却总笑个不停,身边的每个人都说我的生活好快乐,于是我也就认为自己真的快乐。可是为什么我会在一大群朋友中突然地就沉默,为什么在人群中看到个相似的背影就难过,看见秋天树木疯狂地掉叶子我就忘记了说话,看见天色渐晚路上暖黄色的灯火就忘记了自己原来的方向。
级别: 茶馆馆主
发帖
561855
飞翔币
199259
威望
3696
飞扬币
2858933
信誉值
0

只看该作者 1 发表于: 2022-06-09
千万要小心
级别: 超级版主
发帖
836265
飞翔币
228732
威望
224673
飞扬币
2460722
信誉值
0

只看该作者 2 发表于: 2022-06-10
来看一下
级别: 超级版主
发帖
836265
飞翔币
228732
威望
224673
飞扬币
2460722
信誉值
0

只看该作者 3 发表于: 2022-06-10
不错,了解了