摘 要:
如今,網絡空間日益復雜,越來越多的終端設備如智能手機、打印機、網絡攝像頭、數字媒體設備等也加入到網絡空間中。通過網絡空間資產探測,可以及時發現潛在的安全風險,避免被不法之徒攻擊。基于此,論述了國內外網絡空間資產探測相關研究成果,并簡要介紹了網絡探測中的常用的網絡空間資產主動探測方法及其關鍵技術,歸納和梳理了主動探測的優點和缺點,為網絡空間資產探測技術研究人員提供借鑒。
0
引 言
隨著網絡的不斷發展以及用戶對網絡使用需求的急劇增長,網絡規模不斷擴大、網絡空間趨于復雜。通過網絡空間資產探測,可以及時發現潛在的安全風險,避免被不法之徒攻擊。在國家把網絡空間安全概念提升到一個重要的層次時,其更顯重要。在網絡攻防對抗中,首先得了解網絡,要了解網絡空間,就需要對網絡空間進行資產探測。
網絡空間資產探測技術作為網絡安全的重要基礎技術,是通過主動或被動探測的方法,來繪制網絡空間上設備的網絡節點和網絡連接關系圖,為網絡設備進行畫像。
近年來,網絡資產探測技術已成為網絡安全領域的研究熱點,各國都對此進行了深入研究。如美國國防部先進研究項目局(Defense Advanced Research Projects Agency,DRAPA)驅動的X計劃,旨在通過快速繪制網絡戰場地圖,提高國家網絡戰能力,協助制定作戰計劃,促進網絡戰任務的高效推進。美國國土資源部(United States Department of Homeland Security,DHS)驅動的SHINE計劃,通過Shodan等網絡空間掃描引擎監控美國關鍵基礎設施網絡資源的安全狀態,在本地網絡空間地址列表上進行安全態勢感知,并定期向工業控制系統應急小組(Industrial Control Systems Cyber Emergency Response Team,ICS-CERT)推送安全通知,確保關鍵基礎設施網絡安全的安全。
我國目前也已在進行相關方面的研究。我國已經實現對網絡空間網際互連協議(Internet Protocol,IP)地址的掃描,達到資源探測的目的,且能夠對每個IP地址的資源進行識別。但相較于目前國外的技術能力,還需進一步突破基于指紋比對的網絡組件精準探測技術?;谥讣y庫的網絡設備組件識別技術,是網絡空間探測系統的核心技術。該技術可對設備的特定端口進行請求,判斷端口是否開放,并根據端口返回信息,并利用自主研制的指紋比對技術,結合自主研制的指紋庫,對設備類型及所使用的組件進行識別。
在工業控制服務探測方面,國內專門針對網絡空間工業控制服務深度探測技術研究起步相對較晚。目前,通過網絡的主動探測技術可以為一些重要的工業控制系統提供在線監測和識別能力,并可以支持典型的數據采集與監視控制系統(Supervisory control and data acquisition,SCADA)、可編程邏輯控制器(Programmable logic controller,PLC)等工業控制系統(設備),Modbus等工業控制協議,以及與工業控制相關的通用網絡服務。但與國外相比,我國的工業控制服務探測技術還存在許多問題,如支持工控設備/協議等服務數量不足、感知深度不足。與網絡空間大量存在的標準化的信息系統不同,工業控制系統及相關服務存在大量非標準私有的控制協議組件,或同一種工控協議存在多個未公開版本的情況,大多數工業控制服務細節掌握在相關廠家自己手里。
目前,我國需要進一步對相關聯網特征進行深入研究,精準提取其指紋信息,提供感知廣度和掃描效率。同時還需要結合不同網絡資產特點,加強對海量聯網設備信息高效率掃描、隱蔽式探測和被動式感知等聯網服務態勢感知技術的研究,確保全方位、多角度的對網絡空間存在的網絡資產服務進行準確感知和高效測繪。
本文主要介紹了目前網絡資產探測常用方法,歸納和梳理了主動探測的優點和缺點,重點分析了網絡資產探測技術所涉及的關鍵技術。
1
基于ICMP存活主機發現技術
如果與目標主機處于同一網段,使用地址解析協議(Address Resolution Protocol,ARP)掃描技術就是最佳的選擇。該方法具有速度快,掃描結果精確的特點,且沒有任何安全措施阻止正常的ARP包。但當與目標主機處于不同網段,則考慮使用其他協議。
互聯網中經常會出現各種錯誤,為了發現和處理這些錯誤,互聯網控制報文協議(Internet Control Message Protocol,ICMP)應運而生。相比APR簡單明了的工作模式,ICMP則要復雜很多,但ICMP同樣是互聯網中不可或缺的協議。ICMP協議位于傳輸控制協議/網際互連協議(Transmission Control Protocol/Internet Protocol,TCP/IP)族中的網絡層,它的目的是在IP主機、路由器之間傳遞控制消息。同樣這種協議也可以用來實現存活主機發現。
表1 ICMP報文類型
從表1可以看出,ICMP的報文可以分為差錯和查詢兩類。查詢報文是用一對請求和應答定義的。也就是說,主機A為了獲得一些信息,可以向主機B發送ICMP數據包,主機B在收到這個數據包之后,會給出應答。這一點正好符合本文進行存活主機掃描的要求,所以這里的ICMP存活主機發現技術使用的就是查詢報文。
1.1 利用ICMP響應請求和應答探測存活主機
響應請求和應答是用來測試發送與接收兩端鏈路及目標主機TCP/IP協議是否正常,只要接收就是正常。日常使用最多的ping命令就是利用了響應請求和應答。主機A向主機B發送ICMP報文,如果途中沒有異常,則主機B返回ICMP報文,說明主機B為存活主機。但ping工具使用率較高,所以許多用于防護主機的防火墻設備都隔絕ICMP數據通過。
1.2 通過時間戳請求和應答進行存活主機探測
由于Ping方式被很多網絡屏蔽,因此另尋他法。ICMP時間戳請求允許系統查詢另一個系統的當前時間,返回的建議值是自午夜起的毫秒數,即協調世界時(Coordinated Universal Time,UTC)。如果想知道B主機是否在線,還可以向B主機發送一個ICMP時間戳請求,如果得到應答的話就可以視為B主機在線。當然,其實數據包內容并不重要,重要的是是否收到了回應。
1.3 通過ICMP地址掩碼進行存活主機探測
ICMP地址掩碼請求由源主機發送給無盤系統,以便在啟動過程中獲得自己的子網掩碼。盡管互聯網工程任務組(the Internet Engineering Task Force,IETF)發布的一系列備忘錄(Request For Comments,RFC)規定除非系統是地址掩碼的授權代理,否則它不能發送地址掩碼響應。但是,大多數主機在收到請求時都會發送響應。如果想知道主機B是否在線,您還可以向主機B發送ICMP掩碼地址請求,如果您得到響應,可以視作主機B在線。
2
基于TCP存活主機發現技術
TCP協議是一種可靠的傳輸協議,連接到TCP/IP協議套件中的各層允許以字節流的形式發送和接收數據。為了使服務器和客戶機以不同的速度生成和使用數據,TCP提供了發送和兩個接收服務。此外,TCP提供全雙工服務,數據同時能雙向流動。通信的每一方都有兩個緩沖器來發送和接收數據。TCP向消息中添加一個漸進式確認序列號,以告訴發送方接收方希望接收下一個字節。如果在指定的時間內沒有收到確認信息,則會再次發送數據包,從而確保TCP是可靠的傳輸層協議。
通常,Ping掃描使用TCP ACK和ICMP Echo請求來響應目標是否存活。當目標主機的防火墻阻止這些請求時,可以使用TCP SYN Ping掃描來判斷目標主機是否處于存活狀態,但在某些情況下,防火墻會丟棄RST包。在這種情況下,掃描結果將不準確。此時,需要指定一個端口或端口范圍,以避免這種情況。TCP ACK Ping掃描與TCP SYN Ping掃描是非常類似的,唯一的區別是設置TCP的標志位是ACK而不是SYN。此探測方法可以探測阻止SYN數據包或ICMP回顯請求的主機。雖然許多防火墻將阻止SYN數據包,但是TCP ACK Ping掃描和TCP SYN Ping掃描的結合可以大大提高通過防火墻的概率。發送1個ACK標志的TCP包給目標主機,如果目標主機不是存活狀態則不響應該請求,如果目標主機在線則會返回一個RST包。
3
基于UDP存活主機發現技術
用戶數據報協議(User Datagram Protocol,UDP)也是一個位于傳輸層的協議,它完成的工作與TCP是相同的。然而,由于UDP協議是非面向連接導向的,UDP端口的探測不能像TCP端口的探測那樣依賴于連接建立過程,也就是說,不能嘗試telnet等TCP協議類型命令,這也導致了UDP端口掃描的可靠性不高。因此,雖然UDP協議比TCP協議簡單,但是掃描UDP端口是相當困難的。
當一個UDP端口收到一個UDP數據包時,如果該端口關閉,它將向發送端回一個ICMP端口無法訪問的數據包;如果它是開放的,它將忽略數據包,也就是說,它將被丟棄而不返回任何信息。
這樣做的好處是可以完成對UDP端口的探測,但缺點是掃描結果的可靠性相對較低。因為當一個UDP數據包被發送而沒有收到響應時,可能是因為UDP端口打開了,也可能是因為數據包在傳輸過程中丟失了。此外,掃描速度非常慢。原因是RFC1812限制了ICMP錯誤消息的生成速度。例如,Linux將ICMP數據包的生成速率限制為每4 s 80次。當超過此限制時,它將暫停1/4 s。
4
端口、服務本掃描
端口探測根據協議劃分可以分為TCP端口探測和UDP端口探測。由于TCP技術相對UDP技術要復雜一些,所以TCP的探測手段也比UDP多。圖1為端口掃描的方式。
圖1 端口掃描方法
其中,同步序列編號(Synchronize Sequence Numbers,SYN)掃描是最為流行的一種掃描方式,掃描方式速度極快,可以在一秒鐘掃描上千個端口,SYN掃描也不容易被網絡中的安全設備所發現。
如圖3所示為服務及版本探測探測流程圖。在探測流程中,先執行端口探測,端口探測同時也是服務和版本探測的基礎,通過端口探測可以排除離線網絡設備和關閉的端口,從而縮小了后續探測任務的規模,提高識別效率。本文采用基于半連接TCP SYN的方法,如圖2所示。其掃描原理是向目標主機的端口發送SYN包請求連接,目標接收到SYN包后用SYN/ACK響應,探測主機接收到SYN/ACK斷開連接后用RST包請求代替ACK響應。這樣,三方握手就沒有完成,無法建立正常的TCP連接。因此,此掃描不會記錄在系統日志中,且這種掃描技術通常不會在目標主機上留下掃描痕跡。
圖2 半連接TCP SYN掃描原理
服務和版本探測是通過服務Banner信息進行指紋比對,從而實現對網絡空間中的服務和版本的識別。由于每種服務都有著不同的Banner信息,因此可以對服務和版本探測進行識別??蛻舳伺c服務器連接后,服務器會向客戶端反饋一些信息,這些信息中可能包含所需的服務和版本信息。
在數據處理過程中對掃描的IP地址和端口數據進行分類。分類是將具有相同開放端口的IP地址分類為1個類別,然后針對每個類別,使用多線程方法分別執行服務和版本探測。在服務和版本探測中,通過端口來判斷某些服務是不準確的,因為服務可以通過端口映射來改變。banner信息使用軟件本身返回的信息為服務和版本探測提供基礎。信息的差異可以幫助完成對網絡中服務和版本的探測。在這個過程中,由于需要記錄發送數據包的狀態信息,所以需要使用傳統的探測方法來探測整個過程中的服務和版本。
完成端口掃描后,如果開放端口為TCP端口,先建立連接并等待6 s,一些常見的服務如FTP、SSH等則會發送一些banner信息,這個過程稱為空探針。將收到的banner信息和服務指紋進行匹配,假如服務完全匹配成功,則該端口的服務識別到此結束,如果未成功則繼續掃描??仗结樒ヅ涫』蛘遀DP 探測端口,則會按照指紋順序進行探測和識別。如果都匹配失敗,則判斷指紋中是否有回退指令,并按照回退指令發送探測包,并利用響應數據進行指紋匹配,直到匹配指紋結束。
圖3 服務及版本探測探測流程
5
操作系統掃描
操作系統探測是根據應用層獲取的banner信息和TCP/IP指紋特征探測操作系統。根據應用層獲取的banner信息,可以直接獲取一些終端設備的操作系統。當banner與指紋匹配時,就可以完成對這部分設備的操作系統探測。例如,可以根據一些Web服務的HTTP報頭信息來獲取操作系統的具體信息。
操作系統的探測可以分為兩類:傳統的操作系統識別技術和基于TCP/IP協議棧指紋的操作系統識別技術。傳統的操作系統標識又分為兩類:一種是使用操作系統提供的Telnet、文件傳輸協議(File Transfer Protocol,FTP)和Ping。當客戶端使用Telnet和FTP命令時,服務器返回包含操作系統類型的特定信息,另一種是通過Ping探測目標主機操作系統的方法,根據返回的生存時間(Time To Live,TTL)值確定操作系統的類型,因為TCP協議棧在通信時沒有指定TTL跳轉值。不同的操作系統中,TTL值是不同的,如表2所示。通過TTL判斷操作系統的方法雖然簡單,但是TTL的值是可以進行更改的,所以結果可信度不高。
表2 常用操作系統的TTL和窗口大小
目前,應用最廣泛的操作系統識別方法是基于TCP/IP協議棧指紋的,因為TCP/IP協議棧的設計不同,可以利用這些不同的特征來識別操作系統。一般分為主動探測和被動探測兩種方法。
(1)主動探測:客戶端主動向目標主機發送信息。目標主機響應此信息并使用一些信息進行響應。通過分析返回的信息,可以知道遠程主機的操作系統類型。這些信息可以等于主機通過Telnet和FTP等正常網絡程序交換的信息,也可以是一些精心構造的、正常的或不完整的數據包。
?。?)被動探測:并不向目標系統發送任何數據包,而是通過各種抓包工具來手機流經網絡的數據報文,再從這些報文中得到目標計算機的操作系統信息。
主動探測對探測IP具有針對性的特點,而且方便部署,所以在操作系統探測中較為常用??梢酝ㄟ^目標系統對探針的不同反應,發現不同操作系統的差異。通過向目標主機發送特定格式的探針(數據包)來查看目標主機的響應數據,這一過程就是操作系統指紋分析的過程。數據包進行調整的部分包括窗口大小、窗口字段、分片標識、時間戳、序號以及其他一些細節,例如TTL等。
主動探測通過發送多達16個探針的操作系統指掃描包,這些探針利用了TCP、UDP、ICMP等各種協議。基于主動探測操作系統識別流程如下文所述。
?。?)向目標主機端口連續發送6個帶有SYN標志的TCP數據包,響應數據構成SEQ、OPS、WIN、T1等指紋特征值。
(2)發送兩個不同的ICMP echo請求,響應數據構成IE指紋特征值;
(3)發送一個UDP包給一個關閉的端口,響應數據構成U1指紋特征值;
(4)發送帶ECN位的TCP請求,響應數據構成ECN指紋特征值;
?。?)最后一組是發送6個不同的TCP包,這6個TCP包的響應結果將對應T2到T7的各項指紋特征值,其中T2、T3、T4會發給打開的TCP端口,T5、T6、T7會發給關閉的TCP端口;
?。?)結果處理。對返回的數據包進行計算和組織,形成向量,然后將生成的向量結果與指紋數據庫文件中的結果進行匹配,以確定被探測主機的操作系統類型。這就完成了單個操作系統的探測過程。
操作系統指紋通過主動探測獲取的TCP/IP響應包進行指紋抽取,抽取字段主要包括SCAN、SEQ、WIN、ECN、T1~T7、U1和IE等,指紋示例如下文所示。
每一次掃描結果都用%作為分隔符。
SCAN字段中顯示的是使用的主機掃描的信息。其中:D=9/2表示掃描日期;OT=80%CT=7指出在指紋識別過程中使用的TCP端口;CU=31290指出了在指紋識別過程中使用的UDP端口;PV=N表示目標IP地址不屬于私有地址;DS=4指出了從探測點到目標主機的距離跳數;G=Y指出這次掃描效果較好;TM=57C9147B指出掃描所消耗的時間;P表示探測主機的操作系統類型。
SEQ字段中:SP=102表示TCP的初始序列號(ISN);GCD=1表示TCP的增量;ISR=10C表示ISN的序率;TI=Z給出了SEQ探針回應數據包中IP頭部的ID值;這里面的Z表示所有IP數據包中的id字段都設置為0;II=I給出了ICMP探針回應數據包中IP頭部的ID值;TS=7給出了返回的TCP數據包時間戳的信息。
OPS字段中:如O1=M5B4表示TCP數據包每次能夠傳輸的最大數據分段;ST11表示ACK的可選信息和數據包的時間戳內容;N表示為空操作;W0表示窗口大小。
WIN字段中的測試表示6個探針返回值的初始化窗口大小。
ECN字段中:R=Y表示目標是否對探測端進行了回應;DF=Y表示IP數據包的分段標志位是否被設置;T=40表示回應數據包IP中的TTL值;W=3354表示TCP初始化窗口的大小信息;O=M5B4NNS表示TCP選項的信息;CC=Y表示目標的擁塞控制能力;Y表示目標支持ECN。
第1個TCP探針回應為T1;第2個探針是設置了DF位的內容為空的數據包。這個數據包的窗口大小為128,回應為T2;第3個TCP探針是一個設置了FIN、URG、PSH以及SYN標識的數據包,這個數據包的大小為256,回應為T3;第4個探針是一個設置了ACK的TCP包,這個包同樣也設置了DF位,大小為1024,回應為T4;第5個探針是一個窗口大小為31 337的數據包,回應為T5;第6個數據包和第4個數據相似,但窗口為32 768,而且這個數據包通常是發往關閉的端口,回應為T6;發送的第7個數據包設置了FIN、URG和PSH標志位,這個探針同樣發往一個關閉的端口,窗口大小為65 532,回應為T7;
U1的結果是根據UDP數據包探測返回的結果,這個探針的數據部分是300個C字符,回應為U1。
IE探測基于ICMP協議響應結果。
主動探測的優點是對探測IP具有針對性,即使這些目標不主動生成流量或流量不通過探測節點,也可以通過構造探測包對其進行探測,探測載荷的部署節點也更加靈活。然而,主動探測也有一定的局限性,當目標監測到探測行為可能會主動屏蔽來歷不明的探測包,這樣就無法獲得準確的探測結果。通過主動探測也無法準確獲得某些網絡節點之間的拓撲連接關系。此外,主動探測會產生額外的探測流量,導致網絡負載增加,所以主動探測將不可避免地干擾網絡的當前狀態,導致探測結果出現一定偏差。
6
結 語
設備資產識別對網絡安全評估與威脅預警有著重要的意義,網絡空間已成為國民經濟和社會生活的重要場所,網絡技術已成為考察和衡量國家核心技術的重要指標,網絡安全已成為國家安全的重要構成。網絡資產探測是認識、研究網絡空間的根基,研究網絡資產探測有助于加強網絡安全事件應急指揮能力建設。國內可實現對網絡空間IP地址的掃描,達到網絡資源探測的目的,能夠對每個IP地址的資源進行識別,但相對于國外的技術能力,還需進一步突破精準探測等關鍵技術。