【加速器常識】深入分析加速器獵手
來自江蘇常州市的TNT2轉(zhuǎn)載它文
加速器獵手是太陽風(fēng)同志辛勤工作的成果,沒有太陽風(fēng)一年多來的不斷耕耘,就沒有今天精彩的加速器獵手, 因此讓我們在文章的開始對太陽風(fēng)同志表示真誠的 問候!首先要說的是以前我并沒用過該軟件,手頭的版本 還是1998年出的1.1版。但在寫作的后半段還是去下載了最新的2.8版。但結(jié)果還是一樣:)(goodwell注:現(xiàn)在已經(jīng)出3.0版,但是我用了不是很穩(wěn)定。)
--- 這篇文章的寫作目的是幫助ADM擺脫目前網(wǎng)上普遍存在利用加速器獵手進行的大量掃描活動。以及揭示了加速器獵手的實現(xiàn)原理。由于手頭沒有關(guān)于加速器服務(wù)器的詳細資料,因此分析加速器的實現(xiàn)花了很大的精力。希望在傳播本文時請盡量保持文章的完整性,謝謝!
--- 加速器獵手的實現(xiàn): 由于沒有源碼,分析的開始使用的是netcat,利用它的hex dump 功能把獵手所發(fā)出的信息截獲。但netcat是一dos下的軟件,使用起來不太方便,于是又花了幾個小時寫了個forwin的netcat.截獲的信息如下:
47 45 54 20 68 74 74 70 3a 2f 2f 77 77 77 2e 6d # GET abm..www.m
61 78 74 6f 72 2e 63 6f 6d 20 48 54 54 50 2f 31 # axtor HTTP/1
2e 31 0d 0a 48 6f 73 74 3a 20 77 77 77 2e 6d 61 # .1..Host: www.ma
78 74 6f 72 2e 63 6f 6d 0d 0a 41 63 63 65 70 74 # xtor..Accept
3a 20 2a 2f 2a 0d 0a 50 72 61 67 6d 61 3a 20 6e # : */*..Pragma: n
6f 2d 63 61 63 68 65 0d 0a 55 73 65 72 2d 41 67 # o-cache..User-Ag
65 6e 74 3a 20 50 72 6f 78 79 48 75 6e 74 65 72 # ent: ProxyHunter
31 2e 30 0d 0a 0d 0a # 1.0....
手所基本上我們就知道了獵手對癰蟚rver所發(fā)出的信息:
GET htttp://www.maxor HTTP/1.1 Host: www.maxtor Accept: */* Pragma: no-cache
User-Agent: ProxyHunter 1.0
也就是說,在發(fā)出了這樣一個命令序列后,如果對方是proxy server 的話,獵手就會收www.maxtor的首頁,然后下來的應(yīng)該是在 主頁中搜尋預(yù)先定義在獵手中的KEYWORD,如果為真,則目標(biāo)是加速器服務(wù)器,并且免費。于是我猜想如果直接的發(fā)KEYWORD給它,會不會通過它的檢驗了?答案是:ON!,不得以,只好上網(wǎng)(這個月的上網(wǎng) 時間早已透支:)架剎鮪iffer,找上一個真的加速器,然后再找一個 有限制的,測試完后趕緊斷開連接。下面是真加速器服務(wù)器的log:
------------------------------------------------------------------------------
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Content-location: abm..www.maxtor/default.htm
Date: Tue, 04 May 1999 04:53:14 GMT
Content-type: text/html
Accept-ranges: bytes
Last-modified: Wed, 28 Apr 1999 16:42:38 GMT
Etag: "cf6f51f9691be1:105fb"
Content-length: 8558
Content-location: abm..www.maxtor/default.htm
Etag: "cf6f51f9691be1:105fb"
Accept-ranges: bytes
Cache-last-checked: Tuesday, 04-May-99 04:15:50 GMT
Proxy-agent: Netscape-Proxy/2.5
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>
Maxtor Corporation - Creative Solutions for Information Storage
</title>
------------------------------------------------------------------------------
肯定它還檢查了另外的特征傳,但沒有什么好的辦法, 只好一個一個的試了。添入第一行,“HTTP/1.1200 OK" 加上KEYWORD 一起發(fā)給獵手,OK!!! 通過了檢驗。 看來獵手只是檢查了二個地方。(可能是為了加快速度) 進一步的實驗表明,獵手檢查的方式如下:"HTTP/1.1 200"+WORDKEY (特征傳) 也就是說,只要在連接是,你發(fā)給它以上的字符傳,獵手接受后就會認(rèn)為驗證成功,至此我們已經(jīng)找到了欺騙獵手 從而通過驗證的方法。 而在驗證有限制的加速器是LOG如下:
-----
HTTP/1.1 404 ERROR
.......
-----
進一步的研究表明,僅發(fā)出
"HTTP/1.1 404"
的字符傳就可以欺騙從而通過驗證,獵手顯示 ”要密碼“ :)
---
2.8版的獵手中還增加的對socks的驗證, 但結(jié)果同上:)
---
至此,我們應(yīng)該可以從分析的結(jié)果中找到加速器的實現(xiàn)方法了,剩下就是通過程序來證明之。 但還有兩個方面值得注意:
1。在上面的第一個log中,我附帶了16進制的轉(zhuǎn)換, 這很重要!!早先我就是沒有仔細查看它,走了很長的彎路。請注意字符傳之間的分格符,"0x0d 0x0a" 也就是c 中的”\n";行了嗎?且慢,最重要的就是最后的8bits!!!!!!!!! "0x0d 0x0a 0x0d 0x0a" 連續(xù)的兩個"\n\n",當(dāng)初我就是沒有看到它, 始終得不到正確的答案。 (在程序通不過測試后,我只好手動的找尋答案不行,最后再看了一邊log,才發(fā)現(xiàn)問題所在, 就象 linux 中 mail 命令以一個回車加上一個點代表信箋的結(jié)束一樣,send加速器命令是以連續(xù)的兩個回車結(jié)束. 下面是加速器獵手的gnuC 實現(xiàn),注意,本程序只是解釋了加速器獵手的實現(xiàn)過程,沒有多IP 的掃描功能。
------------------------------cut here isbase-----------------------------
/* this codez describe how to search a PROXY server
*
* by
*
* zer9
* ====
* zer9@21cn
*
* test on slackware 2.0.33
* cc proxyht.c -o proxyht.c
*/
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/socket.h>
#include <signal.h>
#define DefaultProxyPort 8080 //default proxy port 8080
#define MSG1 "GET abm..www.maxtor HTTP/1.1\n" //1 --change (1 ,2)
#define MSG2 "Host: www.maxtor\n" //2 to search
#define MSG3 "Accept: */*\n" // other sit e #define MSG4 "Pragma: no-cache\n"
#define MSG5 "User-Agent: ProxyHT 0.01\n\n" #define KEYWORD "Maxtor Corp" // this is
keyword #define TIMEOUT 30
void alarm_handler(int w)
{
alarm(0);
printf("Time Out!\n");
}
int main(int argc,char *argv[])
{
struct in_addr Target;
struct hostent *he;
struct sockaddr_in sin;
int s,ProxyPort;
char recvbuf1[5000];
char recvbuf2[10000];
if(argc==2)
ProxyPort=DefaultProxyPort;
else
if(argc==3)
ProxyPort=atoi(argv[2]);
else
{
printf("ProxyHT 0.01 by zer9 mail:zer9@21cn\n");
printf("usage: %s [proxy_port]\n",argv[0]);
return 0;
}
if((he=gethostbyname(argv[1]))!=NULL)
bcopy(he->h_addr,(char *)&Target.s_addr,he->h_length);
else
Target.s_addr=inet_addr(argv[1]);
if(Target.s_addr==-1)
{
perror("gethostbyname");
return -1;
}
printf("ProxyHT 0.01 by zer9 mail:
zer9@21cn\n");
if((s=socket(AF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return -1;
}
sin.sin_family=AF_INET;
sin.sin_port=htons(ProxyPort);
sin.sin_addr.s_addr=Target.s_addr;
if(connect(s,(struct sockaddr*)&sin,sizeof(sin))<0)
{
perror("connect");
return -1;
}
bzero(recvbuf1,sizeof(recvbuf1));
bzero(recvbuf2,sizeof(recvbuf2));
printf("%s start verifying... waiting a while please\n",argv[1]);
signal(SIGALRM,alarm_handler);
send(s,MSG1,strlen(MSG1),0);
send(s,MSG2,strlen(MSG2),0);
send(s,MSG3,strlen(MSG3),0);
send(s,MSG4,strlen(MSG4),0);
send(s,MSG5,strlen(MSG5),0);
1alarm(TIMEOUT);
recv(s,recvbuf1,sizeof(recvbuf1),0);
recv(s,recvbuf2,sizeof(recvbuf2),0);
alarm(0);
//if u want to debug , open follow two lines
//printf("%s\n",recvbuf1);
//printf("%s\n",recvbuf2);
if(strstr(recvbuf1,"HTTP/1.1 200"))
{
if(strstr(recvbuf2,KEYWORD))
{
printf("hahaha... there's something found! \n");
close(s); return 0;
}
}
else
{
if(strstr(recvbuf1,"HTTP/1.1 404"))
{
printf("woo! I found one,but dont free...\n");
close(s);
return 0;
}
}
close(s);
printf("sorry.dont hit me please,nexttime i *MUST* find one.\n");
return 0;
}
---Cut Here---------------abm..www.isbase------------------------------
加速器獵手欺騙的實現(xiàn): 一把槍在好人手上可以救人,但落在了壞人手上就。。。:) 加速器獵手就是這樣的槍。 除開大量的利用獵手進行掃描而獲得非法的服務(wù)之后,近來 還有不少人專門利用獵手多線程的特點找尋特定的端口(如 finger(79),31337(BO),12345(BO).....在極有可能造成各種破壞性結(jié)果的同時,還占用了大量的帶寬;使得網(wǎng)上的正;顒佣际艿降挠绊懀ǚ凑沂欠浅5牟凰玻海 (如何對付這些“好奇心非常強”的同志了?是給他們[A].一個小小的教訓(xùn); 還是[B].只讓他們空喜歡一場?下面就是一個linux (gcc) 的Anti-Porxyht 的實現(xiàn),本來win95下的我還先做出來,但不好貼上來,而且也不利于大家的理解。總的說來,非阻塞模式的socket(win95)在寫daemon時要比阻塞模式下socket(BSD4.3)容易的多, 哉詉n95下可以毫不費力的同時監(jiān)聽多個port,而linux下則只有以下幾個選擇:
1.多線程
2.截獲每個IP包,然后再根據(jù)包里的PORT進行處理;
3.同時啟動多個副本:)
4.我就不知到了。。。
1&&2 我都不會,只好用3了。:)
不過一般只要listen to port 8080 就可以了,因為不論獵手 怎么掃,8080都不放過的。同上面的一樣,本程序也只是為了向你展示如何欺騙獵手從而 通過獵手的驗證,并沒有多余的功能,在以后我可能會加上. 在寫本軟件的同時我還花了一段時間測試看獵手是否有overflow 的弱點,在向他發(fā)字符傳時大小 <=256 我都測了,好象有一次看現(xiàn)象應(yīng)該是CPU load 100%,可能是我的愛機太 “快”的問題,其余(20-30次都沒有異常?赡芘c獵手是用 c++ 寫的用關(guān),c++的串類很少有可能發(fā)生 此類情況(overflow).。如果你測試能夠通過 發(fā)送某個字符串讓獵手當(dāng)機,請告訴我喲!:) 盡管是這樣,你還是可以加上某溉鷌n95&win97&win98 的漏洞,在 accept(ns,....)后傳給對方。。。。。。:)(最好是先讓它通過檢驗,讓對方正“無比”高興的時候 發(fā)給他:)))))))(怎么一提到這上面我的興趣就來了;)test on slackware 2.0.33(maybe irix6.4) ./phs 8080 --> 表示監(jiān)聽 8080端口,在遭掃描后欺騙對方通過獵手的驗證 (顯示 :free :) ./phs -n 8080 --> 表示監(jiān)聽8080端口,在遭掃描后欺騙對方通過 獵手的驗證 (顯示: 需密碼:)同樣的,該程序搗鬷n95版我也寫出,可以監(jiān)聽多個端口, 只是兄弟我一沒主頁,二沒ftp,也就無法共享了。
有的讀者可能會問:獵手可以選擇不同的字符傳來驗證,我怎么知道他會向那個網(wǎng)址發(fā)送信息,同時他手頭的 KEYWORD 是什么了?ohhh,u're g00d b0y:)這個問題很關(guān)鍵, 測試表明,如果你發(fā)給獵手的字符傳中沒有KEYWORD 的話(但打頭是"HTTP/1.1 200") ,獵手會顯示“超時”,如果連"HTTP/1.1 200"都沒有,只送一個空字符傳,獵手顯示“無特征串”,送亂串顯示“非proxy". 那我們?nèi)绾谓鉀QKEYWORD的問題了?由于我們是服務(wù)器方,因此 主動權(quán)在我們手中;有兩個方法:
1,構(gòu)建一個大型數(shù)據(jù)庫,如上面程序中的MSG 字符串,把著名的主頁的TITLE都加入其中,我想只要包含有該廠商名字的串就可以了;
2。從對方發(fā)來的請求加速器的命令中過濾出www.xxxx.xxx, 再又發(fā)給它,這可通過程序來實現(xiàn)。最好是加上"Corp" "INC. ","LTD."...之類的通用串, (如果你猜口令比較在行的話,這應(yīng)該不成問題:)
1。2 不相矛盾,可結(jié)合使用。 不過還有一種方法:(紙上談兵:)如果遭攻擊時你在場,先發(fā)給他一個超時的(或需密碼的)信息,一般(我想)對方都會第二次來驗證的,這期間“跑去”真正的網(wǎng)站然后在第二次掃描時把真正的KEYWORD 發(fā)給他。(再次申明:紙上談兵;)
-----
到此為止,這篇文章就要over 了,衷心希望太陽風(fēng) 同志在看到這篇文章后能把獵手做得更加完美。
(不過最好是留一個overflow的洞來,讓我們也過一把隱(^o^)
----------
這篇文章應(yīng)該屬于揭示軟件bug 的那一類,不管怎樣劃分,我總算是為大家做了點貢獻 了!焙芫谩耙郧熬痛蛩銓懸粋關(guān)于入侵欺騙的軟件, 在遭到掃描時(不是獵手這樣的,而是nuess,sscan,...之類的hacker‘scanner)遇到21port的連接請求時發(fā)一個仿wuftp?的界面給它。。。。。不過那時我還在linux下,多端口的監(jiān)聽我還不會,最近轉(zhuǎn)到了c++builder門下,發(fā)現(xiàn)可以輕而一舉的實現(xiàn)之,想一想,選[A] 時整溉鷌n95在外部看來就是一個linux
("#ffff00"hat 5.2 apolllo)(對方肯定會用那溉鷘ftpremoteof 拼命的試:)[B] is slackware2.0.35 [C] is?SUNOS 5.5[D] is.....ha....夠酷吧:)遇到finger @@localhost時發(fā)個超大的passwd給它:)最好連shadow也一起發(fā)給他,讓他自個樂去吧!:)ohh,對了,再加上一個[E]bsd0.0.18那祖?zhèn)鳎炒臍v史書都要翻出來了:))))))任憑那些hacker(初級)用盡腦漿也想不到我這是一臺win95.這個獵手欺騙只不過是嘗試一下,說不定幾天后就會有人(maybeme)寫出BO_SPoof,netspy_spoof...別忘了給我一份:)
TNT2 ,1999-07-18,17:25:12
補充:轉(zhuǎn)載它文。[無內(nèi)容] TNT2 ,1999-07-18,17:58:12
軟件編寫者(太陽風(fēng)windzh@126)說:
呵呵,這篇文章我也早就拜讀過了。
其實大家用加速器,是有一定的泄密危險的,因為你通過加速器上網(wǎng),輸入的所有內(nèi)容(如你email的帳號和密碼)都要從加速器那里過,如果碰上一個惡意的監(jiān)視者,就會給你帶來損失。至于欺騙,如果不是為了監(jiān)視使用加速器的人數(shù)據(jù)內(nèi)容,似乎沒必要。找個健全一些的加速器服務(wù)器,把權(quán)限設(shè)置好就可以不讓別人用了。更簡單地就是將加速器的端口設(shè)到一個沒規(guī)律的端口如7341,這樣也一般不會被搜到了。如果根本就不想讓試探的連接進入,那么就用防火墻吧。