病毒分析整体思路

声明

出品|长白山攻防实验室(ID:逆向萌新)      

以下内容,来自长白山攻防实验室作者原创,由于传播,利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,长白山攻防实验室以及文章作者不承担任何责任。

0x01前言

计算机病毒(Computer Virus)指编制者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机正常使用并且能够自我复制的一组计算机指令或程序代码。

0x02 分析思路

病毒分析,我的思路按照病毒(WannaCry勒索病毒)来分析。

首先,知道WannaCry勒索病毒是蠕虫式勒索病毒,我们先拿到了病毒的样本,确定了环境,是Windows环境下,(放在虚拟机中)进行分析,首先查验一下是否存在壳和导入导出了某些表,在Exeinfo PE软件中进行查看,知道了这个是c语言病毒,利用软件VC++,链接器版本为6.0。

查看pe头部,因为导出表为0,所以我们查看导入表,分析导入的这些动态链接库,存在哪些windows api函数,来分析可能存在了哪些操作。

导入库中KERNEL.dll发现了导入了Windows API函数GetCurrentThreadId这个API函数,通过Windows API函数手册发现,这个的作用是检索指定线程的线程标识符,说明存在对线程的操作,同时获取当前线程但是返回值是当前线程的伪句柄。

而GetCurrentThreadId返回值是当前线程的的标识符,也包含了CreateFileA这个API说明存在创建或者是读取文件的操作还存在TerminateThread,终止线程的操作,GetProcAddress,获取地址的操作,看下一个ADVAPI32.dll,里面有重要的API,CryptGenRandom和CryptAcquireContextA,这两个API,都是加密用的API函数。

利用软件查看反编译。

第一步就是把后面那一串网址,写入变量szURL中,下面定义了一些变量为v4,之后v4=InternetOpenA的作用是初始化了程序对于WinINet的应用,WinInet是对socket进行一层封装可以直接处理http,所以这一步也可以认定为是在初始化http,进入了v5,这一步用了InternetOpenUrlA,第一个参数,必须输入InternetOpenA的返回值,所要访问的url,获取到的值给v5,如果v5不等于0,直接关闭掉这v4和v5的句柄,结束运行,如果等于0,那么关闭v4,跳转到sub_408090函数中。

进入了sub_408090函数中要获取一个包含特定模块的一个特定模块的全路径,必须有当前运行的进程进行生成,因为第一个是为空,所以获取的是当前的进程的全路径,之后会出现了_p___argc()这个库函数,目前不知道具体什么意思,但是大概知道会指向一个数,之后如果这个数值小于2,就会跳转到函数sub_407F20

如果不是小于2,就会建立与指定计算机上的服务器控制器进行连接,并且打开指定的服务控制管理器数据库,之后返回的值,赋值给了v1,之后v1复赋值给了v2,如果v1不等于0,则去打开这个服务,之后又一次赋值给了v4,如果v3不等于0,跳转到函数sub_407FA0,运行完成之后关闭v4的这个句柄,如果等于0的话,那么就直接关闭v2的句柄,之后往下结束serviceStartTable.lpServiceName =mssecsvc2.0,从函数中出来,v6,v7初始化为0,返回ServiceStartTable的将服务进程的主线程连接到服务控制管理器。

现在到这里,已经出来了好几个函数了,所以我们可以先看一下流程图,从最开始的main,到sub_408090判断是sub_407F20还是sub_407FA0。

先进入函数sub_407C40()

进来就先格式化了一下字符串,经过格式化之后的字符串在Dest中,打开SERVICES_ACTIVE_DATABASE服务控制管理器数据库,返回的值给v0,之后v0赋值给v1,如果v0 = 0,就返回值为0,如果不等于0,则创建一个服务对象mssecsvc2.0用户界面程序用于标识服务显示Microsoft Security Center (2.0) Service,之后值给v2,之后v2给v3,如果v2不等于0,启动这个服务,关闭这个v3的句柄,如果等于0,则直接关闭v1句柄,之后返回0。

第二个函数,sub_407CE0()

进来就是加载&ModuleName变量的一个模块,但是不确定是exe还是dll之后出现了GetProcAddress可以基本确定是个dll,查找从这个v0模块句柄中查找这个函数和变量名称之后ProcName=CreateProcessA,综合下面三个查找CrateProcessA,CreateFileA和WriteFile分别给了dword_431478,dword_431458和dword_431460, 

v2是CloseHandle赋值给了dword_43144C,到一串if到里面,v3搜索用于创建当前进程的模块,v5获取v3的获取指向内存中指定资源的第一个字节的指针的句柄,之后检索第一个资源给v9检索v4大小的资源给v6,继续往下探测,到了最里面的if中,Dest被赋值为0,用100个0去填充v19,变量20,21为0,NewFileName为0,用100个0填充v23,之后24,25为0,这里出现了新的东西,一个是C:\WINDOWS\tasksche.exe和C:\WINDOWS\qeriuw-jhrf,tasksche.exe移动到了qeriuwjhrf下。

没有继续往下的分支了,都是返回0,所以最后还是会返回回来sub_408090(),也就是运行到sub_u407CE0之后回到sub_408090()。

进入sub_407FA0(v3,60中)。

v3赋值1,info赋值0,v4 = 1000*60,v6,v7不知道是什么值,v9 = 1,返回的最后的是更改SERVICE_CONFIG_FAILURE_ACTIONS配置信息,继续往下看函数,进入sub_408000()到这里才是真正的程序开始进入了运算。

     一进来,先赋值上去,注册了一个函数来处理服务控制请求,通过mssecsvc2.0来调用,处理程序的函数指针HandlerProc,转入到了HandlerProc中。

在整个HandlerProc中是一个大的switch,最后一句是更新服务控制管理器的状态信息,hServiceStatus里面是当前状态信息的结果句柄,&ServiceStatus里面是包含调用服务最新状态信息的SERVICE_STATUS结果指针。

回到sub_408000中,到了SetServiceStatus(res-ult,&serviceStatus),汇报调用服务的服务控制管理器的状态信息,第一个参数是result,是新的句柄,后面结构指针,之后进入sub_407BD0()。

这是整个静态调试的大题,但是静态调试有一些东西是看不出来的,所以要进行一次动态调试,由于这个有个验证网站的限制,导致病毒是运行不起来的,所以我们可以在前面看一下内存转储看一下。

发现了很多的文件后缀,所以这些是可被这个勒索病毒所加密的后缀。

0x03总结

对于病毒分析,其实比拼的就是windows api的理解还有足够的信心和耐心,需要一个很长久的一个时间去磨一个病毒文件,否则这个病毒想做什么,你可能是一直都不知道的,只要耐心的去看,去磨,去查,慢慢的就自己能看懂了,做好标记,因为有很多时候,都有防止你破解的动作,比如加壳,花指令,混淆等,但是这里没有,以后会碰到。


欢迎关注长白山攻防实验室微信公众号

定期更新优质文章分享

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容