目录
Lab1-1
这个有个exe,还有个dll
先去查杀一下
由于那个网站上不了(翻墙的话应该可以)
除了上面这个多引擎查杀,还有下面的
不过还有PhrozenVirusTotalUploader工具,是客户端版
不过还是不行…..
算了用其他吧
dll的
2.什么时候编译的呢
pe文件里面有这个一个字段
直接拖PE tools,点击文件头
当然用其他工具,或者手动也可以
发现结果跟上面的不一样
那么可以确定那个工具有点问题啊
再看看dll的
时间相差无几,应该是同属一个恶意代码包
有没有被加壳呢
直接看到了vc++6.0,区段也
dll的
查看输入表
有两个查找当前目录文件的api,还有复制文件的(应该是复制自身到一个隐蔽的目录)
dll的
有创建进程,和睡眠
这个就有个网络通信的了
还有没有其他特征可发现呢
看看里面有什么字符串是一个办法
strings的下载地址
https://technet.microsoft.com/en-us/sysinternals/bb897439.aspx
直接strings + 文件名
我们可以看到 有个迷惑的字符串,那个l变成了1,根据前面可以猜测是将自身复制到system32那里迷惑人了
也可看到导入函数
看下dll
有个ip地址,如果真实的病毒就不知保留地址了
总结
应该是复制自身,查找文件那个api有可能是查找杀软,或者要感染的文件等
dll可能是一个后门,由exe来启动,exe有个CreateProcess的api可以dll注入什么的
Lab1-2
接下来直接跟上面的步骤来重复了
而且从上面可以大概知道加了upx壳,应该是一个含有下载功能的恶意代码
查壳看看
确实如此
upx壳,直接esp定律即可脱壳
先看没脱壳的
一个创建服务的
The CreateService function creates a service object and adds it to the
specified service control manager database.
那个InternetOpen是初始化对象的(Initializes an application's use of the WinINet functions.)
再看脱壳了的,就看得更多了
这里就多了一个打开url的了,猜想是get参数传递?
再看看字符串
直接看脱壳了的,脱壳对静态分析的影响还是挺重要的,下面就看到了那个url了,一看这个程序就是本书原作者自己写的
当然od也可以
怎么检测这个主机被这个恶意代码感染呢
一个就是网络迹象:访问上面那个url的
另一个就是创建了一个服务,通过上面的分析可知道,但是创建的服务名是什么还不知道…
稍微od跟一下差多多确定是这个了名称的服务
当然ida就更加清晰了(脱壳的哦)
之后调用了401040,我们去看看
最后再创建一个线程,调用的是StartAddress函数
Lab1-3
一上去全部报毒,这个看来很牛逼啊
查下壳,果然
见识短,这个我第一次见
这个壳,作者说暂时没法脱壳,我就是要挑战,失败了再说,基本上脱壳八法都尝试过了
查了一下,可以用模拟跟踪来脱壳
http://www.giantbranch.cn/?p=341#nbsp
再ctrl + a就看到熟悉的结构了
向下稍微拖一下,发现了main函数
直接用od的插件脱壳吧
看看,果然脱壳了
当然用SFX也是可以的
既然脱了壳,那尝试继续分析咯
看看导入表,有点诡异,不认识。。。,等之后的章节再看吧,作者说18章后回来
看看字符串,有个url
也跟程序运行的效果吻合
跟着就跳到404的页面了
用ida看看吧,其实也不太懂,大概就是通过浏览器打开那个url吧
这里的话,可以通过这个网络特征来查,当然还可以有其他方法
Lab1-4
先查杀一波
又有下载字眼
查一下,没有壳
看看编译时间
看着就有点不对劲
这是伪造的。。
我也可以去修改它
看看导入表
这里可以知道这个可能会执行命令,复制文件,操作一些资源文件,创建线程什么的
这里还涉及权限的东西,那个提升程序的特权(AdjustTokenPrivileges),那个lookup是查询权限,之前的打开句柄吧
网上查了查提升权限的代码段
if ( !OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) ){ TOKEN_PRIVILEGES tkp; LookupPrivilegeValue( NULL,SE_DEBUG_NAME,&tkp.Privileges[0].Luid );//修改进程权限 tkp.PrivilegeCount=1; tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges( hToken,FALSE,&tkp,sizeof tkp,NULL,NULL );//通知系统修改进程权限 return( (GetLastError()==ERROR_SUCCESS) ); }
就是用这几个函数的
接下来看看字符串
有些个下载到文件的api,下载那个完之后的文件后,很可能伪装成系统的一些文件的名称了
没运行lab4前,我们打开那个system32的exe看看
其实运行lab4也会打开这个页面
先来个小总结:有网络连接为啥没有网络连接的api,但字符串中又搜索得到呢,为什么要操作资源节中的数据呢,难道资源节中有什么秘密吗
我们用resource hacker看看资源有什么
我去,里面竟然藏了一个二进制文件
我们直接将他导出来
我们上传查下毒
查下壳,就是一个vc++写的程序,没加壳
看下导入表
应该
这才看到下载了
字符串跟刚才的重复了的,string也搜到资源节中的字符串了
那整个程序我们就可以猜想出来了:
首先是从资源节提取出二进制文件,放到一个目录(可能需要提权),跟着执行提取出来的下载程序,并运行,下载程序下载一个程序后,运行下载后的程序,恩大概应该这样
我们接借助ida看看吧
一开始会枚举进程
枚举每个进程pid
下面调用此函数,看看那个程序(winlogon.exe)有没有运行,
winlogon.exe:Windows Logon Process,Windows NT 用户登陆程序,管理用户登录和退出
跟着进入下面这里
这个是将系统目录下的\system32\wupdmgr.exe移动到临时目录的winup.exe
搜一下,确实如此
再来看,最后的4011fc
首先获取到路径\system32\wupdmgr.exe
跟着从资源节读取数据,最终写入上面的目录
跟着执行从资源节提取出来的一个二进制文件
我们用ida看看那个提取出来的文件
那个程序图标都变了
最后发现怎么没有权限提升呢,发现漏了
跟进,提升不成功就加载一个dll,sfc_os.dll,进行dll注入
继续跟进就可以看到经常看到的权限提升的代码了
我们最后看看那个下载来的程序时怎么样的吧
结果发现跟从资源节解压出来的哪个二进制文件一样,访问一下那个下载的url结果已经404了
所以那个wupdmgr.exe跟资源节解压出来的一样也不奇怪了(没下载前是用那个覆盖的嘛)
好了,基本上分析完了,虽然程序简单,但是学到的东西还是很多的