******思路


---asm_c  
    ******涉及許多知識和技術,並不是一些人用一兩招就可以搞定的。
一,踩點
踩點可以瞭解目標主機和網絡的一些基本的安全信息,主要有;
1,管理員聯繫信息,電話號,傳真號;
2,IP地址範圍;
3,DNS服務器;
4,郵件服務器。
相關搜索方法:
1,搜索網頁。
   確定目標信息1,爲以後發動字典和******做準備;尋找網頁源代碼找註釋和隱藏域,尋找隱藏域中的"FORM"標記。例如:

可以發起SQL注入***,爲以後***數據庫做準備。
相關工具:UNIX下的Wget,Windows下的Teleport。
2,鏈接搜索
   目標網站所在的服務器可能有其他具有弱點的網站,可以進行迂迴***,而且可以發現某些隱含的信息。
搜索方法介紹:
通過各種搜索引擎:GOOGLE,[url=http://www.dogpile.com,[url]http://www.hotbot.com[/url]][url]http://www.dogpile.com[/url],[url]http://www.hotbot.com[/url][/url]
二,查點
A,確定目標的域名和相關的網絡信息。
搜索方法;
Whois查詢,通過Whois數據庫查詢可以得到以下的信息:
1,註冊機構:顯示相關的註冊信息和相關的Whois服務器;
2,機構本身:顯示與某個特定機構相關的所有信息;
3,域名:顯示與某個特定域名相關的所有信息
4,網絡:顯示與某個特定網絡或單個IP地址相關的所有信息;
5,聯繫點:顯示與某位特定人員相關的所有信息
搜索引擎站:[url]http://www.infobear.com/whois.shtml[/url],
舉例:Output of: whois [email][email protected][/email]
Registrant:
Netease.com, Inc.
36/F Peace World Plaza, No.362-366
Huan Shi Dong Road
Guangzhou, Guangdong 510060
CN

Domain Name: 163.COM

Administrative Contact, Technical Contact:
Netease.com, Inc. [email][email protected][/email]
36/F Peace World Plaza, No.362-366
Huan Shi Dong Road
Guangzhou, Guangdong 510060
CN
+86-20-85525516 fax: +86-20-85525535

Record expires on 24-Jan-2009.
Record created on 15-Sep-1997.
Database last updated on 10-Feb-2006 03:24:01 EST.

Domain servers in listed order:

NS.NEASE.NET 202.106.185.75
NS3.NEASE.NET 220.181.28.3

B,利用ARIN數據庫可以查詢某個域名所對應的網絡地址分配信息。
相關搜索地址:[url]http://ws.arin.net/cgi-bin/whois.pl[/url]
利用[url]http://whois.apnic.net/apnic-bin/whois2.pl[/url]進行對IP地址的查詢,以蒐集有關的網絡信息:
舉例:163.com->202.108.9.16
inetnum:      202.108.0.0 - 202.108.255.255
netname:      CNCGROUP-BJ
descr:        CNCGROUP Beijing province network
descr:        China Network Communications Group Corporation
descr:        No.156,Fu-Xing-Men-Nei Street,
descr:        Beijing 100031
country:      CN
admin-c:      CH455-AP
tech-c:       SY21-AP
mnt-by:       APNIC-HM
mnt-lower:    MAINT-CNCGROUP-BJ
mnt-routes:   MAINT-CNCGROUP-RR
changed:      [email][email protected][/email] 20031017
status:       ALLOCATED PORTABLE
changed:      [email][email protected][/email] 20060124
source:       APNIC

role:         CNCGroup Hostmaster
e-mail:       [email][email protected][/email]
address:      No.156,Fu-Xing-Men-Nei Street,
address:      Beijing,100031,P.R.China
nic-hdl:      CH455-AP
phone:        +86-10-82993155
fax-no:       +86-10-82993102
country:      CN
admin-c:      CH444-AP
tech-c:       CH444-AP
changed:      [email][email protected][/email] 20041119
mnt-by:       MAINT-CNCGROUP
source:       APNIC

person:       sun ying
address:      Beijing Telecommunication Administration
address:      TaiPingHu DongLi 18, Xicheng District
address:      Beijing 100031
country:      CN
phone:        +86-10-66198941
fax-no:       +86-10-68511003
e-mail:       [email][email protected][/email]
nic-hdl:      SY21-AP
mnt-by:       MAINT-CHINANET-BJ
changed:      [email][email protected][/email] 19980824
source:       APNIC
知道了目標所在的網絡,可以進行迂迴***,尋找薄弱點,進入目標網絡,然後在***目標。

C,DNS信息查詢
域名系統允許把一個DNS命名空間分割成多個區,各個去分別保存一個或多個DNS域的名字信息。
區複製和區傳送:DNS服務器之間是採用區傳送的機制來同步和複製區內數據的。
區傳送的安全問題不在於所傳輸的域名信息,而在於其配置是否正確。因爲有些域名信息當中包含了不應該公開的內部主機和服務器的域名信息。
相關工具:
1,Windows下,nslookup,SamSpade;
2, UNIX下:nslookup,dig,host,axfr
在Windows下的使用方法:
c:\>nslookup
Default server: 目標的DNS服務器
Address: 目標的IP地址

>set type=ANY  //表示接受任何可能的DNS記錄
>ls -d 163.com >zone.163.com.txt   //獲得目標域的相關記錄,結果保存在zone.163.com.txt

D,通過Traceroute獲得網絡的拓撲結構以及網絡網絡設備的地址。
相關工具;
Windows下:Tracert 支持ICMP協議
UNIX下:Traceroute 支持ICMP和DNS協議,由於多數防火牆已經過濾了ICMP,所以UNIX下的Traceroute是不錯的選擇,而且使用-p n選項可以自己指定使用的端口。

三,網絡掃描
面對不同的網絡,應該採用不用的掃描方法:
1,對於內部網絡,可用類型很多,ICMP協議是普遍要裝上的,在內部網廣播ICMP數據包可以區分WINDOWS和UNIX系統,
發送類型爲8的ICMP的ECHO請求,如果可以受到類型爲0的ECHO迴應,表明對方主機是存活的。
相關工具介紹:
UNIX下的:fping&gping
WINDOWS下:Pinger 特點:速度快,多線程。
2,對於外部網絡,可用類型也很多,涉及到的原理也有很多,例如:TCP掃描,UDP掃描,
其實我是很不願意用掃描工具的,很容易使對方感覺到***事件的發生,不論是防火牆還是***檢測系統都會或多或少的留下我們的腳印,如果遇到一個勤快的管理員的話,那麼這次***很可能以失敗告終。
但使用與否依各個喜好而定了:),有時候我們在測試網絡或者主機的安全性時,就不能忽視他的存在了,首先,安全測試不是***,全面的測試對抵禦***和蠕蟲的***是必要的,在這裏推薦的端口掃描工具是NMAP,因爲他帶有躲避IDS檢測的機制,重組了TCP的三次握手機制,慢掃描機制等等都是其他掃描工具無法比擬的,UDP掃描是很不可靠的,原因有下幾點:
這種掃描依靠ICMP端口不可達消息,如果發送端給目標一個感興趣的端口發送了一個UDP數據包後,沒有收到ICMP端口不可打消息,那麼我們認爲該端口處於打開狀態。
不可靠的原因:
1,路由器可能丟棄UDP分組;
2,很多的UDP服務不也不產生響應;
3,防火牆的常規配置是丟棄UDP分組(除DNS外);
4,休眠狀態的UDP端口是不會發送一個ICMP端口不可到達消息。

還有的掃描工具就是弱點掃描工具,這些工具綜合各種漏洞信息構造漏洞數據庫,去探究存在漏洞沒有打補丁的主機,當然也有針對特定漏洞的檢測發現工具(腳本小子能用,網絡安全人員也弄用--雙刃劍-:)
這裏詳細介紹對目標操作系統類型的檢測原理:
Telnet標識和TCP/IP堆棧指紋:
1,網上許多的系統可以直接Telnet到目標,大多會返回歡迎信息的,返回的信息包含了該端口所對應的服務軟件的版本號,這個對於尋找這個版本的軟件的漏洞很重要,如果對方開了Telnet,那麼可以直接得到對方的系統類型和版本號,這個對於挖掘系統的漏洞很重要(對於溢出來說,不同版本的系統和語言版本的系統來說,RET地址,JMP ESP,地址是不同的)。
2,如今越來越多的管理員懂的了關閉功能標誌,甚至提供僞造的歡迎信息。那麼TCP/IP堆棧指紋是區分不同系統的好方法。
1,FIN掃描
給打開的端口發送FIN包,RFC 793規定不返回任何響應,例外的系統是: MS Windows,BSDI,CISCO,HP/UX,MVS和IRIX都返回一個RESET包。
2,TCP初始序列號(ISN)採樣
這種方法利用了在實現TCP連接時使用不同的ISN模式識別系統,可以分成多種模式:傳統的64K增加(舊
UNIX OS),隨機增加(新版的Solaris,IRIX,FreeBSD,Digital UNIX和Cray等),真正隨機(Linux 2.0.*,OpenVMS和新版AIX等),Windows系統使用所謂的“時間依賴性”模型,即ISN的增加同某一個短固定的時間間隔有關係,有些主機始終使用固定的ISN,例如3COM集線器(使用0x803)和AppleLaserWriter打印機(0xC7001)。
3,不分片位
目前許多系統在他們發送的包中使用IP“不分片”位,這主要是想獲得好的運行性能,不過也不是所有的操作系統都有此功能,即使有,其實現的方式可能也不同。因此利用次位或許有利於我們收集更多的有關目標OS的信息。
4,TCP初始窗
TCP初始窗只是簡單地測試返回包的窗口尺寸。Queso和Nmap可以對實際的窗口進行窗口跟蹤。在很多操作系統中是一個常數。例如:AIX是唯一使用0x3F25的操作系統。對於完全重新編寫代碼的NT 5的TCP堆棧,使用0x402E.
5,ACK值
如果發送一個FIN|PSH|URG,許多操作系統設置ACK等於初始序列號,而Windows和某些打印機將發送seq+1.如果發送一個SYN|FIN|PSH|URG到打開的端口,不同的Windows系統的實現將很不一致,有時返回seq,有時返回seq+1,甚至返回完全隨機的數值。
6,ICMP錯誤消息機制
某些操作系統按照RFC 1812的建議,限制不同錯誤消息的發送速率。例如:Linux內核(在net/ipv4/icmp.h中定義)限制目標不可到達消息的產生速率爲4秒種內80個,如果超過這個限制將有1/4的懲罰。測試方法是發送一大串包到某些隨機選取的高端口,然後計算返回的不可到達包的數目。
7,ICMP消息引用(Message Quoting)
RFC規定:ICMP錯誤消息將引用一小部分導致錯誤消息包的ICMP消息內容。對於端口不可達消息,幾乎所有的實現都只發送所需要的IP頭+8字節。不過Solaris發送的內容更多,而Linux發送的東西最多。這就是我們識別沒有打開任何端口的Linux和Solaris主機。
8,ICMP錯誤消息回射完整性
主機對端口不可打錯誤消息將送回一小部分於是消息的內容。某些機器送回的包中包括的協議頭部分已經被改變。例如,AIX和BSDI送回的IP總長度是20字節。而系統BSDI,FreeBSD,OpenBSD,ULTRIX和VAXen則將原樣送回你所發送的IP標識符。某些系統(AIX和FreeBSD等)將送回不一致或等於0的校驗和。這同樣適用於UDP校驗和。Nmap對ICMP錯誤消息包進行九種不同的測試以標識系統之間的微笑差別。
9,TCP選項
是實現TCP/IP協議時可選的一個部分功能,這跟不同的系統實現有關,這些選項都是挖掘可用信息的好方法。原因是:
1,他們都是可選項,不是所有主機都可以實現的;
2,如果你所發送的包中對某個選項進行了設置,只要目標支持,那麼目標主機就返回此選項;
3,可以在包中設置所有的選項進行測試。
例如:Nmap在每個探測包中設置所有的選項來進行測試:
Windows Scale=10;NOP;Max Segment Size=265;Timestamp;End of Ops;
從返回的的包中查看這些選項,就知道了什麼系統支持他們。

還有一種被動操作系統識別方法,就是監控不同系統之間網絡包的情況來判斷目標的操作系統類型,siphon被用來進行這方面的測試,這個工作原理如下:
簽名:
主要TCP的四個字段判斷:
1,TTL:出站的包的存活時間;
2,Window size:窗口大小;
3,DF:是否設置了不準分片位;
4,TOS:是否設置了服務類型。
綜合這些信息可以大概判斷出目標的系統,但不能%100。
四,查點
利用查點技術可以得到比前面講的更多更具體的有用信息,例如:帳戶信息等。
1,Windows系統查點技術
利用NetBIOS規則,首先介紹NetBIOS,NetBOIS位於TCP/IP之上,定義了多個TCP和UDP端口。
----TCP
(1),139:nbsession:NetBOIS會話。
例如:net use \\IP\ipc$ " " /user:" ".
(2),42:WINS:Windows Internet名字系統(UDP端口也是42)。
----UDP
(1)137:nbname:名字查詢。
例如:nbtstat -A IP  //03中顯示的不是計算機名就是用戶名
(2)138:nbdatagram:UDP數據報服務
例如:net send /d:domain-name "Hello"
得到用戶名利用到了IPC$空會話和sid工具。sid工具由兩個小工具組成:user2sid和sid2user.user2sid獲得用戶名或組名的sid;sid2user則是輸入一個sid而獲得相應用戶名的和組名,sid就是在創建用戶時而創建的,相當於UNIX系統下的UID,WIN系統權限的檢查就是通過對SID的檢查的。一個sid是由一長串數字組成的,其中包括兩個部分,前一部分用來唯一標識一個域,後一部分唯一標識一個用戶名,這部分數字被稱作rid,既相對標識符,rid有一定的規律,其取值總是從500開始的,超級管理員的rid總是500,而GUEST用戶的rid總是501;而新建立的帳戶的rid從1000開始。
具體的步驟:
c:\net use \\IP\ipc$ " " /user:" "
c:\user2sid \\IP guest //得到了SID的前半部分
s-1-5-21-1123561945-1580818891-1957994488-501
s是sid的前綴,後面跟的是1表示版本號,5用於標識發放sid的授權實體,5指NT/2000。21-1123561945-1580818891-1957994488唯一地標識域和工作組。不同的用戶只是最後的相對標識符不一樣。現在用sid2user查詢系統的用戶名了:
c:\sid2user \\IP 5 21 1123561945 1580818891 1957994488 500
name is cookie
domain is condor
c:\sid2user \\IP 5 21 1123561945 1580818891 1957994488 1001

SNMP查點:通過默認的管理羣字符串PUBLIC讀取特性,可以得到系統的一些信息,具體有:接口表,路由表及ARP表,TCP表和UDP表,設備表和存儲表,進程表和軟件表,用戶表,共享表。
SNMP工具,snmputil.exe
例如:
1,或者網絡接口數目:
c:\snmputil get localhost public .1.3.6.1.2.1.2.1.0
2,顯示所有的SNMP變量內容
c:\snmputil walk localhost public .1.3
2UNIX類系統的查點技術
1,$showmount -e [url]www.target.com [/url]   //前提2049號端口開着(NFS)
2,$finger @[url]www.target.com  //[/url]還有rusers
3, $telnet [url]www.target.com[/url] 25
   vrfy root    //證實是否有root
   expn adm
   quit
五,具體的分析漏洞
針對特定目標進行了以上分析後,總結出最好的***思路,選擇***工具,做好***的準備工作是必須,有時***時間的選擇也是很重要的,因爲會涉及到正常的公司網絡的正常通信,甚至會使惡意的網絡在你***測試就發生了,最直接的漏洞利用方法,我認爲是溢出漏洞了,因爲他直接就可以得到對方的系統權限,返回一個和在本地一樣的SHELL環境,此時無所不能:
溢出***的分類有:
1,WINDOWS下的和UNIN下的
一般原理,就用戶提交的參數範圍超過了在內存中保存的本地變量的範圍,而程序或者系統並沒有對輸入的參數進行合理的長度檢查,導致了被調用函數的返回地址被覆蓋,如果用一個跳轉到我們提交的shellcode的地方的地址代替,那麼我們的shellcode就可以運行,成功得到了目標的系統權限。
此外還有格式化串漏洞,導致這個漏洞的原因是在處理用戶數據的參數時沒有過濾用戶提交的,格式化符號,例如%n這個將允許輸出的參數的個數保存在內存中,惡意構造此漏洞用戶將會向內存的任何位置寫SHELLCODE的地址。
2,常見漏洞類型
UNIX下的本地漏洞很多,挖掘起來也較容易,他主要有以下幾種類型:
1,環境欺騙
一般指PATH環境變量的欺騙,就是說如果一個特權的程序執行了一個外部的命令,那麼我們可以簡單的構造這個外部命令程序,然後修改PATH使這個特權程序能夠去首先執行我們構造的外部命令程序,而這個外部的命令程序是一個去得SHELL的程序例如:
bash$cat >ps #!/bin/sh
>EOF
而這個特權程序是:
bash$cat >test.c int main()
>{
>setuid(0);
>system("ps -ef");   /*程序調用了外部命令,但沒有給出這個命令的絕對路徑,這個是PATH欺騙的前提*/
>}
>EOF
編譯後的test文件具有s爲,屬主是root.這樣設置是因爲程序test執行時會以root身份運行特權命令,這樣在他運行時由於調用的是我們僞造的ps命令程序,所以會產生一個root權限的SHELL環境。
2,競爭條件
一般指時序競爭,例如:
fp=fopen("test.log","w+");
chown("test.log",getuid(),getgid());
原理也很簡單,就是如果當前的程序運行時權限是euid=root,uid=當前用戶,由於文件test.log在打開會執行將文件的屬主改爲當前用戶,所以我們可以在執行完fopen之後,chown之前刪了test.log,而創建了一個到/etc/passwd的符號鏈接,這樣就會將/etc/passwd文件的屬主改爲當前的用戶,當前的用戶就可以在passwd文件中將自己的uid改爲0,這樣就取得了system權限。
3,溢出和格式串漏洞
導致這些漏洞的數據來源主要是:
1,命令行參數
2,環境變量
3,特定格式文件的讀取
4,用戶交互十的輸入
緩衝溢出的漏洞是有以下一些函數引起的:
1,strcpy
2, strcat
3, sprintf
4, vsprintf
格式化串的漏洞和以下一些函數有關:
1, print/vprintf
2, fprintf/vfprintf
3, sprintf/vsprintf
4, snprintf/vsnprintf
利用工具有objdump,elfedump查看目標是否有不安全的以上不安全的函數,如果有可以進行黑盒測試,進而進行返彙編分析程序的上下文和執行流程,利用strings可以靜態查找目標的環境變量。
六,***WWW
現在的***事件,***WWW居多,原因也很簡單,那就是程序員在編寫WEB腳本程序時更本不注重安全因素,導致了上傳shell,提升權限之類的嚴重後果,******測試主要通過以下幾個方面進行測試:
1,搜索SQL注入點;
2,搜索特定目錄和文件,例如:上傳程序文件,這個利用價值也很大;
3,尋找管理員登陸網頁,進行字典或者SQL饒過***;
4,尋找WEB程序的源代碼,進行漏洞挖掘,主要涉及的漏洞類型有:SQL注入,文件包含漏洞,目錄跳轉漏洞,以腳本文件格式保存錯誤日誌漏洞,上傳漏洞;
5,在代碼審覈時,不要忘記對程序員犯的邏輯錯誤進行查看,例如:函數書寫錯誤
6,總是,漏洞的成因歸根到底是由於對用戶的輸入沒有進行嚴格的過濾。
七,其他的***
1,針對數據庫MSSQL,MYSQL,ORACLE等數據庫的***;
2,針對路由,防火牆,IDS等網絡設備的***
3,無線******
八,******以後
1,在成功得到系統級別的權限以後,就要在目標留下後門方便以後進入,當然清楚日誌是最爲重要的收尾工作,這些方面也有很多的技術可以討論,例如:後門的隱藏(WIN下的ADS是一個不錯的隱藏程序的東東,日誌的有選擇刪除及其僞造等等,這裏就不詳談了。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章