深入分析代理獵手_適合獵頭初學者看的書
代理獵手是太陽風同志辛勤工作的成果,沒有太陽風一年多來的不斷耕耘,就沒有今天精彩的代理獵手,因此讓我們在文章的開始對太陽風同志表示真誠的問候!首先要說的是以前我并沒用過該軟件,手頭的版本還是1998年出的1.1版。但在寫作的后半段還是去下載了最新的2.8版。但結果還是一樣:)(goodwell注:現在已經出3.0版,但是我用了不是很穩定。)
這篇文章的寫作目的是幫助ADM擺脫目前網上普遍存在利用代理獵手進行的大量掃描活動。以及揭示了代理獵手的實現原理。由于手頭沒有關于代理服務器的詳細資料,因此分析代理的實現花了很大的精力。希望在傳播本文時請盡量保持文章的完整性,謝謝!
代理獵手的實現: 由于沒有源碼,分析的開始使用的是netcat,利用它的hex dump 功能把獵手所發出的信息截獲。但netcat是一dos下的軟件,使用起來不太方便,于是又花了幾個小時寫了個forwin的netcat.截獲的信息如下:
47 45 54 20 68 74 74 70 3a 2f 2f 77 77 77 2e 6d # GET http://www.m
61 78 74 6f 72 2e 63 6f 6d 20 48 54 54 50 2f 31 # axtor.com 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.com..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….
手所基本上我們就知道了獵手對于server所發出的信息:
GET htttp://www.maxor.com HTTP/1.1 Host: www.maxtor.com Accept: */* Pragma: no-cache
User-Agent: ProxyHunter 1.0
也就是說,在發出了這樣一個命令序列后,如果對方是proxy server 的話,獵手就會收www.maxtor.com的首頁,然后下來的應該是在主頁中搜尋預先定義在獵手中的KEYWORD,如果為真,則目標是代理服務器,并且免費。于是我猜想如果直接的發KEYWORD給它,會不會通過它的檢驗了?答案是:ON!,不得以,只好上網(這個月的上網時間早已透支:)架上sniffer,找上一個真的代理,然后再找一個有限制的,測試完后趕緊斷開連接。下面是真代理服務器的log:
——————————————————————————
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Content-location: http://www.maxtor.com/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: http://www.maxtor.com/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” con_tent=”text/html; charset=iso-8859-1″>
<title>
Maxtor Corporation – Creative Solutions for Information Storage
</title>
——————————————————————————
肯定它還檢查了另外的特征傳,但沒有什么好的辦法, 只好一個一個的試了。添入第一行,“HTTP/1.1200 OK” 加上KEYWORD 一起發給獵手,OK!!! 通過了檢驗。 看來獵手只是檢查了二個地方。(可能是為了加快速度)進一步的實驗表明,獵手檢查的方式如下:”HTTP/1.1 200″+WORDKEY (特征傳)也就是說,只要在連接是,你發給它以上的字符傳,獵手接受后就會認為驗證成功,至此我們已經找到了欺騙獵手從而通過驗證的方法。而在驗證有限制的代理是LOG如下:
—–
HTTP/1.1 404 ERROR
…….
—–
進一步的研究表明,僅發出
“HTTP/1.1 404”
的字符傳就可以欺騙從而通過驗證,獵手顯示 ”要密碼“ :)
—
2.8版的獵手中還增加的對socks的驗證, 但結果同上:)
—
至此,我們應該可以從分析的結果中找到代理的實現方法了,剩下就是通過程序來證明之。 但還有兩個方面值得注意:
1。在上面的第一個log中,我附帶了16進制的轉換,這很重要??!早先我就是沒有仔細查看它,走了很長的彎路。請注意字符傳之間的分格符,”0x0d 0x0a” 也就是c 中的”\n”;行了嗎?且慢,最重要的就是最后的8bits!!!!!!!!! “0x0d 0x0a 0x0d 0x0a” 連續的兩個”\n\n”,當初我就是沒有看到它, 始終得不到正確的答案。(在程序通不過測試后,我只好手動的找尋答案不行,最后再看了一邊log,才發現問題所在,就象 linux 中 mail 命令以一個回車加上一個點代表信箋的結束一樣,send代理命令是以連續的兩個回車結束. 下面是代理獵手的gnuC 實現,注意,本程序只是解釋了代理獵手的實現過程,沒有多IP 的掃描功能。
——————————cut here ———————————–
/* this codez describe how to search a PROXY server
*
* by
*
* zer9
* ====
* zer9@21cn.com
*
* 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 http://www.maxtor.com HTTP/1.1\n” //1 –change (1 ,2)
#define MSG2 “Host: www.maxtor.com\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.com\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.com\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—————————————–
代理獵手欺騙的實現: 一把槍在好人手上可以救人,但落在了壞人手上就。。。:)代理獵手就是這樣的槍。除開大量的利用獵手進行掃描而獲得非法的服務之后,近來 還有不少人專門利用獵手多線程的特點找尋特定的端口(如 finger(79),31337(BO),12345(BO)…..在極有可能造成各種破壞性結果的同時,還占用了大量的帶寬;使得網上的正?;顒佣际艿降挠绊懀ǚ凑沂欠浅5牟凰玻海ㄈ绾螌Ω哆@些“好奇心非常強”的同志了?是給他們[A].一個小小的教訓; 還是[B].只讓他們空喜歡一場?下面就是一個linux (gcc) 的Anti-Porxyht 的實現,本來win95下的我還先做出來,但不好貼上來,而且也不利于大家的理解??偟恼f來,非阻塞模式的socket(win95)在寫daemon時要比阻塞模式下socket(BSD4.3)容易的多,在win95下可以毫不費力的同時監聽多個port,而linux下則只有以下幾個選擇:
1.多線程
2.截獲每個IP包,然后再根據包里的PORT進行處理;
3.同時啟動多個副本:)
4.我就不知到了。。。
1&&2 我都不會,只好用3了。:)
不過一般只要listen to port 8080 就可以了,因為不論獵手怎么掃,8080都不放過的。同上面的一樣,本程序也只是為了向你展示如何欺騙獵手從而通過獵手的驗證,并沒有多余的功能,在以后我可能會加上. 在寫本軟件的同時我還花了一段時間測試看獵手是否有overflow 的弱點,在向他發字符傳時大小 <=256 我都測了,好象有一次看現象應該是CPU load 100%,可能是我的愛機太 “快”的問題,其余(20-30次都沒有異常??赡芘c獵手是用 c++ 寫的用關,c++的串類很少有可能發生 此類情況(overflow).。如果你測試能夠通過 發送某個字符串讓獵手當機,請告訴我喲?。海┍M管是這樣,你還是可以加上某個win95&win97&win98 的漏洞,在 accept(ns,….)后傳給對方。。。。。。:)(最好是先讓它通過檢驗,讓對方正“無比”高興的時候發給他:)))))))(怎么一提到這上面我的興趣就來了;)test on slackware 2.0.33(maybe irix6.4) ./phs 8080 –> 表示監聽 8080端口,在遭掃描后欺騙對方通過獵手的驗證(顯示 :free :) ./phs -n 8080 –> 表示監聽8080端口,在遭掃描后欺騙對方通過 獵手的驗證 (顯示:需密碼:)同樣的,該程序的win95版我也寫出,可以監聽多個端口,只是兄弟我一沒主頁,二沒ftp,也就無法共享了。
有的讀者可能會問:獵手可以選擇不同的字符傳來驗證,我怎么知道他會向那個網址發送信息,同時他手頭的 KEYWORD 是什么了?ohhh,u”re g00d b0y:)這個問題很關鍵, 測試表明,如果你發給獵手的字符傳中沒有KEYWORD 的話(但打頭是”HTTP/1.1 200″) ,獵手會顯示“超時”,如果連”HTTP/1.1 200″都沒有,只送一個空字符傳,獵手顯示“無特征串”,送亂串顯示“非proxy”. 那我們如何解決KEYWORD的問題了?由于我們是服務器方,因此 主動權在我們手中;有兩個方法:
1,構建一個大型數據庫,如上面程序中的MSG 字符串,把著名的主頁的TITLE都加入其中,我想只要包含有該廠商名字的串就可以了;
2。從對方發來的請求代理的命令中過濾出www.xxxx.xxx, 再又發給它,這可通過程序來實現。最好是加上”Corp” “INC. “,”LTD.”…之類的通用串, (如果你猜口令比較在行的話,這應該不成問題:)
1。2 不相矛盾,可結合使用。 不過還有一種方法:(紙上談兵:)如果遭攻擊時你在場,先發給他一個超時的(或需密碼的)信息,一般(我想)對方都會第二次來驗證的,這期間“跑去”真正的網站然后在第二次掃描時把真正的KEYWORD 發給他。(再次申明:紙上談兵;)
到此為止,這篇文章就要over 了,衷心希望太陽風 同志在看到這篇文章后能把獵手做得更加完美。
(不過最好是留一個overflow的洞來,讓我們也過一把隱(^o^)
這篇文章應該屬于揭示軟件bug 的那一類,不管怎樣劃分,我總算是為大家做了點貢獻了?!焙芫谩耙郧熬痛蛩銓懸粋€關于入侵欺騙的軟件,在遭到掃描時(不是獵手這樣的,而是nuess,sscan,…之類的hacker‘scanner)遇到21port的連接請求時發一個仿 wuftp?的界面給它。。。。。不過那時我還在linux下,多端口的監聽我還不會,最近轉到了c++builder門下,發現可以輕而一舉的實現之,想一想,選[A] 時整個win95在外部看來就是一個linux
(“#ffff00″hat 5.2 apolllo)(對方肯定會用那個wuftpremoteof 拼命的試:)[B] is slackware2.0.35 [C] is?SUNOS 5.5[D] is…..ha….夠酷吧:)遇到finger @@localhost時發個超大的passwd給它:)最好連shadow也一起發給他,讓他自個樂去吧?。海﹐hh,對了,再加上一個[E] bsd0.0.18那祖傳3代的歷史書都要翻出來了:))))))任憑那些hacker(初級)用盡腦漿也想不到我這是一臺win95.這個獵手欺騙只不過是嘗試一下,說不定幾天后就會有人(maybeme)寫出BO_SPoof,netspy_spoof…別忘了給我一份:)
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
限售股減持是由于原先特定原因被限制不能在證券流通市場上進行流通的股票,在解除限制后,股票持有人減持股票的行為。中國市場的限售股主要包括上市公司在股權分置流程中從原非流通股轉變為限售期的流通股,即股改限售股,又稱大小非,新股首次公開發行上市造成的短期限售股。限售股減持稅務籌劃途徑有哪些?(自然人股東)1、大宗交易平臺“洗股”個人轉讓解禁后限售股是指個人持有的限售股在解禁后的第...
燈影牛肉絲是哪里的特產?燈影牛肉是四川通川的特產,由宣漢黃牛后腿的腱子肉切片制成,顏色鮮紅、口感麻辣香脆,深受大眾喜愛,燈影牛肉的所在地通川,地處四川東北部地區,平均氣溫在17度左右,四季分明,適合宣漢黃牛的生長。燈影牛肉是什么地方的特產?1、四川通川燈影牛肉是四川省達州市通川區的特產,由于其肉片薄如紙,可以透過肉片看到對面的景象,就像皮影戲的幕布,因此稱為燈影牛肉,其原材料為宣漢黃牛后退的腱子肉...
這幾天銀聯在線支付是什么意思的信息是受到大家關注度很高的,大家目前也是比較想要了解銀聯在線支付是什么意思方面的信息,那么小編今天就收集了一些關于目前銀聯在線支付是什么意思的一些信息來分享給大家,希望能夠幫助到大家吧。如何開通銀聯在線支付功能?銀聯在線支付是由中國銀聯聯合各商業銀行推出的銀行卡網上交易轉接清算平臺,開通了銀聯在線支付的銀行卡可以無需開通網上銀行即可實現網購車票、線上生活消費、境內外網...