◆李紅偉 王耘翔 王成
(云南電網(wǎng)有限責(zé)任公司曲靖供電局云南 655000)
隨著我國電網(wǎng)多年的建設(shè)發(fā)展,電力監(jiān)控系統(tǒng)網(wǎng)絡(luò)規(guī)模日益龐大,接入的二次測控裝置種類也越來越多。電網(wǎng)自動(dòng)化專業(yè)運(yùn)維人員,需要時(shí)常維護(hù)網(wǎng)絡(luò)資產(chǎn)及拓?fù)?,針?duì)資產(chǎn)情況(比如終端設(shè)備的系統(tǒng)版本及內(nèi)核)及時(shí)發(fā)現(xiàn)并修復(fù)電力監(jiān)控系統(tǒng)、管理信息系統(tǒng)網(wǎng)絡(luò)及終端設(shè)備的安全隱患,這是二次設(shè)備安全防護(hù)的基礎(chǔ)性工作。當(dāng)前,網(wǎng)絡(luò)拓?fù)漕惞芾砉ぷ髦饕€是處于全人工或半自動(dòng)狀態(tài),由于一些嵌入式設(shè)備和國產(chǎn)操作系統(tǒng),對(duì)其內(nèi)核版本操作系統(tǒng)進(jìn)行了剪裁和改造,運(yùn)維人員可以通過ping包發(fā)現(xiàn)設(shè)備,但無法確認(rèn)設(shè)備的一些詳細(xì)信息[1],從而給后期設(shè)備臺(tái)賬辨識(shí)帶來麻煩。目前,一些軟件如天擎360、X-Probe、Nmap提供這方面的探測支撐,概括來說主要采用以下幾種方案:(1)主機(jī)安裝代理程序,搜集主機(jī)信息,自動(dòng)上送數(shù)據(jù)中心[2],例如天擎360,該方案適合對(duì)辦公網(wǎng)絡(luò)內(nèi)的PC主機(jī)進(jìn)行管理,優(yōu)點(diǎn)是探測準(zhǔn)確、可定義功能較多,缺點(diǎn)在于需要安裝維護(hù)工作量較大、且很多二次裝置的系統(tǒng)都較小,難以適配和安裝。(2)探測網(wǎng)絡(luò)內(nèi)主機(jī)通信服務(wù)端口,通過服務(wù)端口返回?cái)?shù)據(jù)包中的特征獲得主機(jī)操作系統(tǒng)類型,原理在于不同類型的操作系統(tǒng),安裝的不同軟件服務(wù)會(huì)對(duì)請求數(shù)據(jù)返回接受和拒絕服務(wù),在這類相關(guān)的信息里暴露出操作系統(tǒng)及版本號(hào)。該方案優(yōu)點(diǎn)是識(shí)別比較準(zhǔn)確,缺點(diǎn)是命中率不能保障,一些主機(jī)會(huì)通過系統(tǒng)補(bǔ)丁加固屏蔽這類問題,從而使掃描期望獲取的信息丟失。(3)堆棧查詢技術(shù)。該方案充分利用了TCP/IP協(xié)議在定義時(shí)留有了一部分自由實(shí)現(xiàn)和擴(kuò)充空間,不同的操作系統(tǒng)廠商乃至不同的系統(tǒng)版本,在進(jìn)行系統(tǒng)級(jí)設(shè)計(jì)時(shí),由于編碼和處理的不同,產(chǎn)生不同的響應(yīng),有些是可接受的響應(yīng)(比如針對(duì)開放端口的數(shù)據(jù)請求),有些則是拒絕服務(wù)(比如針對(duì)關(guān)閉端口的數(shù)據(jù)請求),這些響應(yīng)在滿足TCP/IP協(xié)議的基本要求的同時(shí),也給出了不同的響應(yīng)特征,這些特征的組合,就像是系統(tǒng)的指紋。該方案優(yōu)點(diǎn)命中率比較高,特別是操作系統(tǒng)類型的識(shí)別,缺點(diǎn)是使安全評(píng)估軟件在較小的延遲內(nèi),得到一些關(guān)于類型和版本之類的信息,會(huì)比較困難,往往需要采用并發(fā)方式采集數(shù)據(jù)。
以上三種主要的解決方案各有優(yōu)缺點(diǎn),在電力系統(tǒng)內(nèi)部網(wǎng)絡(luò)中,存在著縱向加密、橫向隔離二次安全防護(hù)的結(jié)構(gòu)[3],并且廠站內(nèi)部很多網(wǎng)絡(luò)設(shè)備終端存在各類異構(gòu)剪裁的操作系統(tǒng),因此,選擇探測網(wǎng)絡(luò)內(nèi)主機(jī)通信數(shù)據(jù)包中的特征獲得主機(jī)操作系統(tǒng)類型的方案,可以預(yù)測獲得的收益和準(zhǔn)確率較高。而在網(wǎng)絡(luò)設(shè)備的掃描上又存在主動(dòng)發(fā)包掃描和被動(dòng)流量數(shù)據(jù)包探測兩種,由于發(fā)現(xiàn)設(shè)備的工作數(shù)據(jù)測試類,而非監(jiān)測類工作,因此在本中采用了主動(dòng)探測技術(shù)。
指紋識(shí)別在生物學(xué)上是指由于每個(gè)人的指紋都有差異,利用人的指紋特征,通過特殊的光電掃描和計(jì)算機(jī)圖像處理轉(zhuǎn)換,對(duì)指紋信息進(jìn)行數(shù)字化轉(zhuǎn)換后,再將結(jié)果與龐大的已有指紋庫進(jìn)行比對(duì),從而快速精準(zhǔn)鑒別出個(gè)人身份。由于 TCP/IP協(xié)議知識(shí)在 RFC[4-6]文檔中描述,并沒有一個(gè)完全統(tǒng)一的產(chǎn)品標(biāo)準(zhǔn),造成了各操作系統(tǒng)在 TCP/IP協(xié)議實(shí)現(xiàn)上的差異,正是這些差異產(chǎn)生區(qū)分操作系統(tǒng)的依據(jù)。文中采用該原理對(duì)不同操作系統(tǒng)的TCP/IP協(xié)議棧細(xì)微差別類鑒定操作。
(1)根據(jù)選定的訪問表格、網(wǎng)段、IP等規(guī)則生成掃描對(duì)象組。
(2)開啟對(duì)象組所有對(duì)象端口掃描,枚舉出可用、不可用、過濾等清單。
(3)開啟數(shù)據(jù)捕獲進(jìn)程,對(duì)目標(biāo)和源頭方向的數(shù)據(jù)進(jìn)行監(jiān)聽,記錄下雙方之間的發(fā)送和接收數(shù)據(jù)包。
(4)由計(jì)算機(jī)根據(jù)對(duì)象列表進(jìn)行掃描,每個(gè)掃描對(duì)象需要發(fā)送五組測試數(shù)據(jù)。大概說明如下:第一組測試數(shù)據(jù)通過發(fā)送6個(gè)TCP包,分析檢查響應(yīng)的各種細(xì)節(jié),可獲得包含WIN、T1 SEQ、OPS(每個(gè)代表一組特征值)。第二組測試發(fā)送兩個(gè)不同的 ICMP echo請求,檢測其響應(yīng)特征。第三組測試發(fā)送一個(gè) UDP包給一個(gè)關(guān)閉的端口,然后看下ICMP的端口不可達(dá)回復(fù)。第四組測試是 端顯式擁塞通知”測試。該測試會(huì)發(fā)送帶ECN位的TCP請求,比較其響應(yīng)情況。第五組是發(fā)送六個(gè)不同的TCP包,其中T2-T4會(huì)發(fā)給打開的TCP端口,T5-T7會(huì)發(fā)給關(guān)閉的TCP端口。這六個(gè)TCP包的響應(yīng)結(jié)果可獲得對(duì)應(yīng)的T2到T7的各項(xiàng)指標(biāo)。
(5)解包進(jìn)行各項(xiàng)指標(biāo)計(jì)算。
(6)對(duì)指紋庫進(jìn)行匹配,計(jì)算相似度。
(7)按照相似度優(yōu)先級(jí)給出答案。
圖1 Nmap 指紋庫格式
(1)TCP ISN最大公約數(shù)(GCD)
SEQ測試會(huì)將六個(gè) TCP SYN數(shù)據(jù)包發(fā)送到目標(biāo)機(jī)器的開放端口,并回收應(yīng)答的SYN / ACK數(shù)據(jù)包。 這些SYN / ACK分組中的每一個(gè)包含 32位初始序列號(hào)(ISN)。 此測試目的是嘗試區(qū)分不同類型的主機(jī),由于很多設(shè)備序列的增加是按照固定數(shù)值增加的,有的是1,有的則是256等等。
計(jì)算此問題的第一步是在探測響應(yīng)之間創(chuàng)建一系列差異。 第一個(gè)差值是第一和第二探測響應(yīng)ISN之間的差異。 第二個(gè)差值是第二個(gè)和第三個(gè)響應(yīng)之間的差異。 如果探測進(jìn)程回收到對(duì)所有六個(gè)探測的響應(yīng),則會(huì)有五個(gè)差值構(gòu)成一個(gè)數(shù)組。由于接下來的幾個(gè)測試的值也使用了這個(gè)數(shù)組,我們接下來將其稱為 diff1。如果后來的報(bào)文的ISN低于它的前一個(gè),則會(huì)計(jì)算從第一個(gè)值中減去第二個(gè)值的大小,或第二個(gè)值減去第一個(gè)值,對(duì)比這兩個(gè)值中較小的一個(gè)存儲(chǔ)在 diff1數(shù)組中。比如第一個(gè)ISN 0x10000后跟第二個(gè)ISN 為0x05000之間的差值是0x0B000。最后,該測試值記錄所有這些差值的最大公約數(shù)。該GCD值也用于計(jì)算接下來的SP的結(jié)果。
(2)TCP ISN計(jì)數(shù)率(ISR)
此值反映返回的報(bào)文中TCP初始序列號(hào)的平均增長率。每兩個(gè)連續(xù)的探測響應(yīng)之間存在差異,比如計(jì)算最大公約數(shù)GCD時(shí)的diff1數(shù)組。 這些差異除以發(fā)送產(chǎn)生它們的兩個(gè)探測報(bào)文之間經(jīng)過的時(shí)間之差(通常以 0.1秒為單位)。結(jié)果也將是一個(gè)數(shù)組,我們稱之為seq_rates,其中就含有每秒 ISN計(jì)數(shù)器增加的速率信息。該數(shù)組對(duì)diff1數(shù)組中每個(gè)值都有一個(gè)對(duì)應(yīng)值。我們接下來取該數(shù)組值的平均值,如果該平均值小于1(例如,系統(tǒng)使用恒定的ISN),則記錄ISR為0。否則,ISR是計(jì)算該平均值的二進(jìn)制對(duì)數(shù)再乘以8的值,這里要四舍五入到最接近的整數(shù)。
(3)TCP ISN序列可預(yù)測性指數(shù)(SP)
前面ISR測試測量的是初始序列號(hào)增量的平均速率,而SP值測量的是 ISN的可變性。它會(huì)粗略估計(jì)從六個(gè)探測響應(yīng)的已知序列,來分析預(yù)測下一個(gè) ISN值的困難程度。計(jì)算時(shí)要使用上述差異數(shù)組(seq_rates)和GCD值。并且我們只有在看到至少四個(gè)響應(yīng)時(shí)才執(zhí)行此測試。如果先前計(jì)算的GCD值大于9,則用先前計(jì)算的seq_rates數(shù)組的每個(gè)值除以該GCD值。我們不用較小的GCD值進(jìn)行除法,因?yàn)檫@些值通常是偶然引起的。 然后獲得所得值的陣列的標(biāo)準(zhǔn)偏差。如果結(jié)果為1或更小,則SP取0。否則,計(jì)算結(jié)果的二進(jìn)制對(duì)數(shù),然后將其乘以8,四舍五入到最接近的整數(shù),存儲(chǔ)為SP的值。
SP值在操作系統(tǒng)分析中具備足量參考作用,但是預(yù)測值始終不能百分百準(zhǔn)確,因此SP難以預(yù)測。
(4)IP ID序列生成算法(TI,CI,II)
這三個(gè)測試會(huì)檢查響應(yīng)的IP頭ID字段。TI基于對(duì)TCP SEQ探測的響應(yīng)。CI基于對(duì)發(fā)送到關(guān)閉端口的三個(gè)TCP探測的響應(yīng):T5,T6和T7。II基于ICMP對(duì)兩個(gè)IE ping探測報(bào)文的響應(yīng)。對(duì)于TI,必須至少收到三個(gè)響應(yīng)才能有測試結(jié)果。對(duì)于 CI,至少需要兩個(gè)響應(yīng)。對(duì)于II,必須收到對(duì)應(yīng)的ICMP響應(yīng)。
對(duì)于這其中每一個(gè)測試,目標(biāo)的IP ID生成算法會(huì)基于以下規(guī)則進(jìn)行分類。需要注意這些測試值之間的細(xì)微差別。注意,該差值假定計(jì)數(shù)器可以循環(huán)。因此,如果IP ID為65,100后面跟著的IP ID值是700的話,它們之間的差值為1136。 如果2000之后跟的是1100的話,之間的差值是64636。以下是測試值規(guī)則:
如果所有IP ID號(hào)都為零,則測試值為Z。
如果IP ID序列增量大于等于20000,則測試值為RD(隨機(jī))。II不可能是這個(gè)結(jié)果,因?yàn)闆]有足夠的樣本來支持它。
如果所有IP ID都相同,則將測試值設(shè)置為十六進(jìn)制的該值。
如果任何兩個(gè)連續(xù)響應(yīng)之間的ID差值超過1000,且不能被256整除,則測試的值為RI(隨機(jī)正增量)。如果差值可以被256整除,則必須至少為256000才能產(chǎn)生此RI結(jié)果。
如果所有差值都可以被256整除并且不大于5120,則將測試設(shè)置為BI(遞增增量)。 這種情況會(huì)發(fā)生在Microsoft Windows等系統(tǒng)上,其中IP ID以主機(jī)字節(jié)順序而不是網(wǎng)絡(luò)字節(jié)順序發(fā)送。它能夠正常工作并且沒有違反任何類型的RFC規(guī)則,盡管它確實(shí)泄露了對(duì)攻擊者有用的主機(jī)架構(gòu)細(xì)節(jié)。
如果所有差值都小于10,則值為I(增量)。我們允許這里差值大小達(dá)到10(而不是需要所有的都完全按順序增量排序),因?yàn)榭赡苡衼碜云渌鳈C(jī)的流量導(dǎo)致序列間隙。
如果前面的規(guī)則都沒有識(shí)別生成算法的測試結(jié)果,則從指紋中省略該測試。
(5)共享IP ID序列布爾值(SS)
SS是指TCP與ICMP是否存在共享IP ID序列的行為。比如,我們六個(gè)TCP IP ID值與ICMP值是一組連續(xù)的值,比如100,101,102,103,104,105,ICMP則是106和107,SS在庫中表達(dá)為S。如果ICMP是很大的不相關(guān)的值,那么SS就是不共享。
這里僅當(dāng)II和TI為RI,BI或I且二者相同時(shí)才進(jìn)行此測試。但是ICMP與之前TCP IP ID不連續(xù)時(shí),測試以下規(guī)則進(jìn)行:
令avg為最后一個(gè)TCP序列測試報(bào)文響應(yīng)的IP ID減去第一個(gè)TCP序列測試報(bào)文響應(yīng)的IP ID,再除以之間探測報(bào)文數(shù)的差值。如果第一個(gè)ICMP回應(yīng)響應(yīng)的IP ID小于最后一個(gè)TCP序列響應(yīng)的IP ID加上該avg的三倍,則SS測試結(jié)果為S,否則就是O。
(6)TCP時(shí)間戳選項(xiàng)算法(TS)
TS是另一個(gè)測試,根據(jù)生成一系列數(shù)字的方式確定目標(biāo)操作系統(tǒng)特征。這個(gè)測試查看 TCP SEQ探測的響應(yīng)中的TCP時(shí)間戳選項(xiàng)(如果有的話)。它檢查的是TSval(選項(xiàng)的前四個(gè)字節(jié))而不是回顯的TSecr(最后四個(gè)字節(jié))值。取每個(gè)連續(xù)TSval之間的差值,并除以探測進(jìn)程發(fā)送兩個(gè)探測報(bào)文之間,響應(yīng)經(jīng)過的時(shí)間。其結(jié)果值給出了每秒時(shí)間戳增量的速率。探測進(jìn)程會(huì)計(jì)算所有連續(xù)探測報(bào)文的時(shí)間戳每秒平均增量,然后按如下方式計(jì)算TS:
如果任何響應(yīng)都沒有時(shí)間戳選項(xiàng),則TS設(shè)置為U(不支持)。
如果任何時(shí)間戳值為0,則TS設(shè)置為0。
如果每秒的平均增量落在0-5.66或150-350的范圍內(nèi),則TS設(shè)置為1,7或8。 這三個(gè)范圍會(huì)被特殊處理,是因?yàn)樗鼈儗?duì)應(yīng)于許多主機(jī)使用的2 Hz,100 Hz和200 Hz頻率。
在所有其他情況下,探測進(jìn)程記錄每秒平均增量的二進(jìn)制對(duì)數(shù),四舍五入到最接近的整數(shù)。由于大多數(shù)主機(jī)使用1,000 Hz頻率,因此A也是常見結(jié)果。
(7)TCP選項(xiàng)(OPS,O1-O6)
TCP頭部選項(xiàng)字段(TCP option)的響應(yīng)值也可以作為測試特征值記錄下來,具體可以參考TCP/IP定義,它保留了其中的原始順序,并提供了有關(guān)選項(xiàng)值的一些信息。由于RFC793中不需要我們有任何特定的排序,因此不同系統(tǒng)對(duì)這里的實(shí)現(xiàn)通常會(huì)提供獨(dú)特的順序。
當(dāng)將所有這些不同的實(shí)現(xiàn)順序,與對(duì)不同選項(xiàng)值使用的數(shù)量都組合在一起時(shí),此測試就提供了一個(gè)真實(shí)有效的信息庫。WIN、ECN、T1-T7等參數(shù)組就不再一一說明了,可以參考相關(guān)材料。
文中通過測試項(xiàng)各個(gè)屬性參數(shù)的值進(jìn)行匹配的方案并不能百分百對(duì)應(yīng)到設(shè)備,實(shí)際網(wǎng)絡(luò)中很多因素制約著百分百的理想匹配情況。針對(duì)這類分類問題,還是采用分類辦法解決,通過一些研究類文獻(xiàn)的證實(shí),采用決策樹進(jìn)行評(píng)估比較適合,原因在于一方面提供的系統(tǒng)指紋庫可以轉(zhuǎn)化成很多樣本,另一方面在實(shí)際過程中不能很好耦合的結(jié)果,可以人為補(bǔ)充指紋庫(很多系統(tǒng)設(shè)備采購具備延續(xù)性,因此可以獲得好的結(jié)果擬合度)。
具體做法是將屬性例如進(jìn)行轉(zhuǎn)化,操作系統(tǒng)的類型就是幾種不同的種類,即枚舉型,將MSS、SP、等屬性設(shè)置為numeric類型即數(shù)值類型,比如將TTL、LEN、WIN、WS等屬性值轉(zhuǎn)為十進(jìn)制值,如果沒有值則用空格代替;S、N與T這四項(xiàng)分別用1代表該項(xiàng)出現(xiàn),用0代表該項(xiàng)未出現(xiàn),D項(xiàng)用1表示DF不分段標(biāo)志位置1,否則用0表示,F(xiàn)項(xiàng)為1表示是SYN包,為2表示是SYN+ACK包。
假設(shè)給定的操作系統(tǒng)特征組集合為S,并且訓(xùn)練樣本分為k類,即為C={C1,…={C此時(shí)集合S的信息熵為:
p(Si)屬于樣本中值屬于Ci的比例
假設(shè)實(shí)際主機(jī)掃描中,某個(gè)屬性集為A,且A={A1,…,Am},選擇Aj作為測試屬性進(jìn)行劃分,則Aj對(duì)應(yīng)的信息增益為GAIN:
其中,「S」為樣本集合的總個(gè)數(shù),SV中屬性為Aj的值對(duì)應(yīng)的個(gè)數(shù)。因此,該屬性值的信息分裂計(jì)算:
從而C45計(jì)算所需的信息增益率為:
逐個(gè)計(jì)算每個(gè)屬性對(duì)應(yīng)的信息增益率;選擇信息增益率最大的屬性作為父節(jié)點(diǎn),在逐步計(jì)算下一級(jí)子節(jié)點(diǎn),以此類推,直到操作系統(tǒng)枚舉型的葉子節(jié)點(diǎn)。
選擇 Center OS、VxWorks、凝思磐石、RedHat、Center OS、WINDOWS 10、WINDOWS SERVER 2010、VxWork等操作系統(tǒng)終端或主機(jī)進(jìn)行盲測,結(jié)果如表1:
表1 探測方法盲測結(jié)果表
網(wǎng)絡(luò)拓?fù)浞治龉ぷ髦虚_展終端主機(jī)操作系統(tǒng)類型分析,有助于對(duì)網(wǎng)絡(luò)中的設(shè)備詳細(xì)情況進(jìn)行快速全面了解,降低自動(dòng)化運(yùn)維人員的工作強(qiáng)度。進(jìn)一步的,有助于明確網(wǎng)絡(luò)中不同設(shè)備系統(tǒng)后期基線管理與加固的內(nèi)容和要求,正確開展安全管理工作。由于不同應(yīng)用場景存在不同的網(wǎng)絡(luò)環(huán)境,指紋探測在應(yīng)對(duì)調(diào)度主站側(cè)和變電站內(nèi)部網(wǎng)絡(luò)的分析時(shí),將較為準(zhǔn)確,但如存在較為嚴(yán)苛的防火墻環(huán)境,分析起來還是會(huì)存在一定的不確定度,但針對(duì)操作系統(tǒng)類型分析準(zhǔn)確率還是很高的,如何不斷利用相關(guān)數(shù)據(jù)信息,提高指紋識(shí)別的匹配度,這也是下一步研究的重點(diǎn)。
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2020年12期