黑客為你講述:如何快速進行常規端口滲透

Linux 黑客 腳本語言 MySQL 每日淺談信息安全 每日淺談信息安全 2017-10-16

黑客為你講述:如何快速進行常規端口滲透

0×01 掃描前奏

開始正式的說明之前,我們不妨先來簡單瞭解下telnet,這也是到目前為止,個人認為最靠譜的tcp端口掃描工具,是的,沒有之一,如果你只是想快速地探測目標的某幾個tcp端口是否開放,直接telnet一下,無疑是極好的,也根本犯不著一上來就摟著專業的端口掃描工具去一通亂掃,這樣做可以有效避免因某些工具動靜兒過大[如,nmap之流...],而造成一些不必要的麻煩,如,觸發對方防護報警[後續再搞很可能就要換ip了,tor暫時也不是想象的那麼好用],簡單使用實例,如下:

# telnet cc.target.edu.hk 1443# telnet cc.target.edu.hk 3389# telnet cc.target.edu.hk 22...

0×02 關於端口掃描工具

除了用telnet對某單個機器進行快速常規高危端口探測之外,如果我們想短時間內對多個目標進行批量端口掃描,又該怎麼辦呢,這裡就簡單介紹下幾款經常會用到的公網端口掃描工具,masscan和zmap,同是基於無狀態的的端口掃描,這裡順便科普下什麼是無狀態,簡單來說,普通的端口掃描工具,在發出請求包以後還有一個等待數據迴應的過程,然後根據迴應的數據包頭標誌(不同系統平臺的協議棧對每種標誌的數據包響應狀態也是不一樣的)以此來判斷目標的某個端口或者服務是否開放,用的什麼操作系統等等……但這樣做,無疑會很大程度上拖慢掃描速度,所以,後來大牛們就搞出了無狀態掃描,這也就意味著,當請求包發送以後就被不再管了,也不再等待迴應,所有的驗證都放在數據包本身,這可能也是它快的主要原因,另外,此類工具為了減少觸發目標ids的機率,都採用了分組掃描算法[這種東西其實並不算新奇],讓掃描的ip隨機分佈[儘可能規避目標防護],而不是密麻集中在某個點……好了,簡單科普就先到這裡,過深的東西,也不是我目前的能力所能企及的,關鍵我們能把工具用起來就行,接著就來分別介紹下兩款工具的一些常規用法,實際滲透中,個人還是更推薦masscan…原因我這裡不多嘴了,還是留給大家,自行慢慢體會吧

0×03

masscan [ 掃描速度取決於你的實際帶寬,默認貌似只掃描tcp端口,但也可掃udp ]:

https://github.com/robertdavidgraham/masscan

masscan 常用選項:

-p 指定要掃描的端口,同時指定多個端口要用逗號隔開--rate 指定發包速率,根據你自己的實際帶寬來定,我自己是20M的光纖,一般給1000足矣,一兩兆的vpn,給100就差不多了,都是粗略估計的,懶的算--open-only 僅顯示開放的端口--banners 獲取banners-c 使用自定義的掃描配置文件--ping 掃之前是否要先ping下目標-oL 把掃描結果存到指定文件中--excludefile 排除不掃描的ip段

masscan 配置文件格式,如下:

# klion masscan config '#'表註釋rate =1000.00 # 指定發包速率,根據自己的實際帶寬計算output-format=list # 指定掃描結果保存的文件格式,這裡我就用最普通的文本存,當然,它是支持直接輸出成xml格式的,後續方便用程序處理output-filename=/root/Desktop/port_hacking.txt # 指定要把掃描的結果文件保存到哪裡output-status=open # 只保留開放的端口信息ports=80,443,8080,U:53 # 指定要掃描的端口,默認tcp,當然,你也可以指定UDP的端口,U即udprange=203.174.48.0/24 # 指定要掃描的ip段,可以連續指定多個,中間記得逗號隔開就好了ping=false # 掃描的時候要不要先ping下,true表示真,即pingbanners=true # 獲取端口banner信息excludefile=/etc/zmap/blacklist.conf # 指定不掃描的ip段,可以把不想掃描的一些ip段都加到這個文件中,如:內網ip段是不需要掃的

黑客為你講述:如何快速進行常規端口滲透

masscan 實例用法 [ 支持同時進行tcp及udp掃描 ]:

手工指定選項掃描# masscan --rate=1000 -p21,22,23,25,U:69,110,143,U:161,80,81,82,83,88,443,445,512,513,514,1433,1521,2082,2083,2181,2601,2604,3128,3690,4848,8088,8086,8081,8080,3306,5432,3389,5984,6379,7001,7002,8069,9200,9300,11211,10000,27017,27018,50000,50070,50030 --banners 202.181.132.0/24 103.15.135.0/24 203.174.48.0/24 203.124.10.0/24 202.65.218.0/24 202.181.196.0/24 -oL port_hacking.txt

黑客為你講述:如何快速進行常規端口滲透

直接加載自定義配置文件進行掃描# masscan -c masscan.conf

黑客為你講述:如何快速進行常規端口滲透

一句話快速鎖定各類敏感服務特徵,注意如果你在掃描過程中ctrl+c終止了掃描,masscan會生成一個paused.conf文件來記錄上次掃描到的位置索引,下次掃描會上次的索引位置開始,如果想重新掃描,刪掉該文件即可:

# cat port_hacking.txt | egrep "ProFTPD|vsFTPd|FileZilla Server|Microsoft FTP Service|Pure-FTPd|OpenSSH|Remote Management Console|User Access Verification|Welcome to the server management|imap|smtp|pop|snmp"

0×04

zmap [ 掃描速度依然是取決於你的實際帶寬,不過,在實際測試中準確率要比masscan稍差,同樣的目標,masscan能掃出來,zmap卻掃不出來,內部具體原因,暫未深究 ]:

其官方站點: https://zmap.io

zmap常用選項 [選項作用其實跟masscan差不太多,只不過zmap默認是tcp模式掃描,如果要用其它的協議掃描就必須自己單獨用選項指定]:

[注意:如果你要手工指定掃描選項,就務必先把zmap.conf文件中的所有選項都註釋掉,不然會出錯,原因暫未知,貌似它默認應該會先讀取這個文件,一般我都是直接把它默認的配置文件選項全部註釋掉,直接手工指定掃描選項]:-p 指定要掃描的端口-b 指定掃描ip黑名單,如,內網ip,我們是不需要掃的-o 保存掃描結果到指定的文件中-w 可以把要掃描的ip段事先都放在一個文件中,進行批量掃描,注意格式,一行對應一個ip段-r 指定掃描發包速率-B 指定你的實際帶寬,比如你帶寬10M,實際指定4-6M即可-C 也可以直接加載自定義配置文件進行掃描-s 在掃描完成後進行簡單彙總--probe-module=icmp_echoscan icmp模式掃描--probe-module=udp udp模式掃描

zmap 掃描配置文件格式說明:

interface "eth0" # 指定用於掃描的網卡接口probe-module tcp_synscan # 掃描模式,默認是是tcp的syntarget-port 3389 # 要掃描的端口,不知道為什麼在配置文件中不能同時指定多個,難道是我格式寫錯了,回頭抽空再好好看看幫助rate 100 # 設置發包速率bandwidth 1M # 設置帶寬blacklist-file "/etc/zmap/blacklist.conf" # 指定掃描黑名單ip段[如,內網ip,特殊ip,所有你不想掃描的ip...]output-file "/root/Desktop/port_res.txt" # 指定掃描結果的存放位置

黑客為你講述:如何快速進行常規端口滲透

zmap 常規用法[支持tcp,udp,icmp模式掃描,最好不要掛vpn掃,原因暫未知,即使加上--vpn貌似也不太好使]:

# zmap -B 1M -p [21,22,23,25,110,143,80,81,82,83,88,443,445,512,513,514,1433,1521,2082,2083,2181,2601,2604,3128,3690,4848,8088,8086,8081,8080,3306,5432,3389,5984,6379,7001,7002,8069,9200,9300,11211,10000,27017,27018,50000,50070,50030] -b /etc/zmap/blacklist.conf -r 1000 202.181.132.0/24 -o Desktop/port_res.txt

黑客為你講述:如何快速進行常規端口滲透

# zmap -C /etc/zmap/zmap.conf 202.181.132.0/24 加載自定配置文件進行掃描

黑客為你講述:如何快速進行常規端口滲透

0×05 在用上面兩款工具時,有些地方還是需要注意下:

實際使用中,最好先根據你的實際帶寬估算下最合適的發包速率,因為你的帶寬和發包的速率會直接影響掃描結果的準確性像這類的工具一般對帶寬和速率的控制要求比較高,還有,在掃描之前它會預先提示你要掃描多少臺機器,機器的多少也是根據你所給的掩碼自動算出來的掃完以後,先隨便telnet幾個ip的端口,看看精度如何,務必不要過度的依賴這些工具掃出來的結果不單單是針對這兩款工具,對所有工具都是如此,理解作者的實際編寫思路比使用工具本身更重要,因為這是靈活運用的前提即使你暫時還寫不出來很優秀的代碼,但總有一天你會寫出來的,先把自己的基礎打好假如以後你想在這方面繼續深入,這些都是很優秀的學習樣板,所以過硬的編碼能力在任何時候都跑不掉,貴在堅持嘛

0×06

最後再來看下老舊的 nmap,作為一款家喻戶曉的探測工具,想必大家對它早已經非常熟悉 [一直為人詬病的是老版本速度非常慢,可能是發包然後等待驗證的過程比較複雜吧,不過,新版本確實已經改進不少],一般在linux目標機器中稍微懂一些的運維都會把這個預先裝上,這樣反而極大的方便了我們:

# nmap -v 192.168.3.240 掃描某單個目標[目標可以是域名,ip後者ip段]# nmap -iL ip.txt 同時掃描多個目標,把目標的ip/ip段事先放在一個文件中,每行對應一個# nmap -Pn 192.168.3.240 掃描前先不要ping# nmap -sV -v 192.168.3.240 探測遠程機器上詳細的服務信息,如,詳細的名稱版本,有banner的可能直接就把banner獲取過來了,沒banner的可能就慢慢的匹配特徵,耗時會相對較長# nmap -O -v 192.168.3.240 探測遠程操作系統平臺,如內核名稱,版本...掃描自己指定的端口,默認如果你不指定端口,它會自動掃描事先寫死在程序中的1000個高危端口# nmap -p 80,81,82,83,84,1433 192.168.3.189# nmap -p U:53,111,137,T:21-25,80,139,8080 192.168.3.189全面掃描目標主機的所有信息,包括操作系統,端口,服務,相當於-O -sV 的總和……# nmap -A -v 192.168.3.240
快速掃描整個C段,速度級別從0到5,默認用icmp請求,極易被防火牆阻攔# nmap -T5 -v 192.168.3.240# nmap -T5 -v 192.168.3.0/24# nmap -T5 --open 192.168.3.0/24# nmap -v 192.168.3.1-10# nmap --packet-trace 192.168.3.0/24 觀察掃描時的詳細發包過程# nmap -sU 192.168.3.240 所謂隱蔽的UDP掃描,其實並不隱蔽幾種常用的掃描方式,tcp的syn和ack掃描另外還有connect(推薦用這個)# nmap -sT 192.168.3.240 個人推薦的掃描方式# nmap -sS 192.168.3.240# nmap -sA 192.168.3.240內網arp掃描,探測內網存活主機還是非常不錯的,可輕易bypass掉各種應用層防火牆,既然是arp就沒必要掃端口了,所以記得帶上 -sn 選項 禁用端口掃描# nmap -sn -PR 192.168.3.0/24
最常用的nmap組合,其實關於nmap的這些基本選項用法,不說大家也應該都早用的熟透了,每個選項參數作用在工具幫助裡就已經說的非常清楚# nmap --open -p port -Pn -v -sT -sV --script script_name ip/domain/cidr

0×07

如何快速對目標網站的一些基本情況做簡要判斷,如,對方用的什麼web服務器,後端腳本是啥,數據庫是啥,系統平臺又是啥等……,下面就來簡單熟悉一些常見的web架構:

asp + access + iis5.0/6.0 + win2003/03r2aspx + mssql2005/mssql2008 + iis7.0/iis7.5 + win2008/08r2php[5.2,5.4,5.6] + mysql[5.1,5.5]/postgresql + apache[2.2,2.4]/iis + linux/winphp/jsp + mysql + ngnix + linux/winjava/jsp + oracle/mssql + tomcat + linux/win……

利用httprint 識別web目標服務器指紋 [ 其實是個比較雞肋的一個小工具,一般看下響應頭中的server字段就有了,不過,這裡的並不準,很容易被改掉 ]:

# httprint -h 144.214.20.118 -s ./Desktop/signature.txt

web服務器指紋字典下載地址:

http://www.net-square.com/signature.txt

常用的幾個相對比較實用的firefox插件,自己在配置滲透環境的時候最好都預先裝上:

hackbartamper datalive http headersfirebugdownthemall...

使用 whatweb [探測到的信息相對比較全面],返回的結果中大致包括以下內容:

請求返回的狀態碼web服務器版本ip所在國家操作系統詳細的版本信息腳本語言版本信息域名解析到的ip截取並顯示網站標題等等……

如何快速判斷目標使用的系統平臺:

在url中嘗試變化大小寫,進行請求,觀察頁面響應,windows默認對大小寫不敏感,linux則嚴格區分大小寫,所以返回的頁面肯定是不一樣的觀察各種報錯信息,看看裡面有沒有洩露服務器的相關信息等等……

0×08

一些常見端口滲透用途彙總,表格實在是太累了,所以就直接截了圖:

黑客為你講述:如何快速進行常規端口滲透

0×09

說了這麼多,想必大家應該很清楚這些端口具體該怎麼利用了

0×10

最後,在介紹個小腳本,whatportis 專門用來查詢某個端口具體作用的

0×11

如果你有興趣,想針對某個國家網段進行大規模掃描也可以把它寫成這樣,當然,我這裡是隨便寫的,你要想實際用肯定是遠遠不夠的,單單只是提供個小demo,能自動化的事情還有很多,寫個shell還是比較簡單的,還是留給大家根據自己的實際需求自行發揮吧,反正工具就在那裡,相互配合才能出效果,各自為戰是很難有所作為的shell

#!/bin/bashwhile read LINEdomasscan -p 21 --rate=100 $LINE | tee -a 21.txtdone < hk_ip.txt# tail -f 21.txt# awk {'print $6'} 21.txt >> result.txt# nmap -p 21 -iL result.txt -oN ftp_anonymous.txt -v --script ftp-anon.nse

後話:

關於端口滲透,如果不是你自己寫工具的情況下,其實本身使用上並沒多少技術含量,至於無狀態掃描的具體內部實現還是比較複雜的,至今為止,很多東西我自己也扔在學習中,如果大家真想深入去理解,非常建議自己直接拿著wireshark一邊跑一邊認真觀察分析,沒有什麼比數據包更能說明問題,篇幅限制,這裡我就不一一把每種掃描方式都帶著大家跑一遍了,有些東西還是需要自己親自嘗試,不然,別人的東西永遠都只是別的,端口這個東西,怎麼說呢,有很多運氣和經驗敏感度的成分在裡面,可能還要外加一個高質量的字典,另外,再多說一句,在沒有十足的把握的情況下,直接在公網跑字典基本是不太靠譜的,實際測試中,對一些稍有防護的目標,爆破的成率還是蠻低的[雖然低,但往往非常有效,走投無路時不妨嘗試],當然啦,對於端口,爆破只是很小的一個方面,比如,當我們發現某個工具或者系統服務存在遠程溢出或者代碼執行[不僅限於此類的可遠程利用的漏洞,任何可以直接遠程主動getshell的都可以],還是那句話,如果你手裡有某個主流服務的通殺遠程0day,不管是你自己挖的還是買的,也許只有這時才能體現端口掃描的真正價值,另外,還有多如牛毛的小工具,這裡都沒提到,後續涉及到內網時我們再仔細說明,對於公網掃描,有這些,暫時足矣,祝大家好運,切記不要幹壞事就好!

相關推薦

推薦中...