恶意代码分析实战-lab05

image-20230222155325788

直接ALT+T搜索Dllmain

image-20230222154705890

空格切换到Text view

image-20230222154927195

得到Dllmain地址

image-20230222155254426

imports视图双击即可

image-20230222155236744

image-20230222155430888

选中gethostbyname,按x键,18个函数引用

image-20230222155418867

image-20230222155444292

快捷键G,输入跳转地址0x10001757跳到相应位置,遇call往上翻,得知pics.xxxx将被触发

image-20230222160030992

image-20230222160121879

image-20230222160318573

g跳转地址,偏移为负的是局部变量,偏移为正的是参数

image-20230222160306813

image-20230222160336813

string界面ctrl+f

image-20230222160702092

image-20230222160633958

image-20230222160724422

选中对应地址按快捷键查看交叉引用,双击跳转到push

image-20230222160928513

image-20230222161108767

g跳转到地址,x查看dword_1008E5C4的交叉引用

image-20230222161205936

关注mov

image-20230222161436854

eax为sub_10003695的返回值,双击sub_10003695

image-20230222161730201

调用了一个GetVersionExA函数,查阅文档,是确定操作系统平台或版本号的函数

F5反汇编

image-20230222162550680

获取当前版本返回一个布尔值以此来确定版本系列

image-20230222162927526

一直往下翻找到memcmp

image-20230222163620900

image-20230222163158681

0x10010444处找到robotwork

image-20230222163640382

调用memcmp之后平栈,test eax eax按位与运行使得零标志位zf为1,从而使得jnz指定不执行跳转,继续往下执行sub_100052A2

image-20230222170006836

调用了RegOpenKey、RegClose函数操作注册表

test指令与操作zf=1,jz指令执行跳转到loc_10005309

image-20230222170738618

F5反汇编看的更清楚些

image-20230222163851736

sub_100052A2

image-20230222163931558

大致知道读取worktime和worktimes的键值,然后执行sub_100038EE

image-20230222171416458

会发送个socket请求

image-20230222171519209

alt+T搜索PSLIST跳转到函数所在位置

image-20230223131557479

先看sub_100036C3

image-20230223132623535huo

获取版本号,返回继续往下走,会跳到loc_1000704E

image-20230223133003327

调sub_1000664,往下翻,应当是创造进程快照的过程

image-20230223133232384

原地反编译,如果进程获取失败

image-20230223133446167

socket发送失败

image-20230223133452956

综上,该函数作用应当是创建进程快照,再将快照发送到指定目标

image-20230223133644904

view->graphs->User Xrefs Chart

image-20230223134153301

GetSystemDefaultLangID应当是获取LanguageID,结合send函数,命名为sendLanguageID

image-20230223134957144

view->graphs->User Xrefs Chart,修改Recursion depth为2

image-20230223134848502

很大

image-20230223134929085

image-20230223135007046

g跳到sleep的位置

image-20230223135510976

off_10019020指向字符串"[This is CTI]30",add让eax再偏移0Dh也就是13,eax变成"30",atoi把字符串30变成整数30,imul使得eax中的整数30乘3E8h即30*1000,而后把300000毫秒压入作为sleep的参数

即sleep睡眠30秒

image-20230223140323064

image-20230223142854111

往上看三个连续的push,即传入socket的参数,protocol、type、af

image-20230223140332012

按M键Use symbolic constant将常量用字符串替换

image-20230223143747827

看不出啥意义

image-20230223140345467

alt+t搜索全局发现一处in指令,R键转换原来的hex看到VMXh

image-20230223145214566

反虚拟机相关字眼

image-20230223150226770

发表评论