• 沒有找到結果。

連線分析演算法

這邊的連線分析情況與演算法主要針對事後的分析來做討論,以現有的資 料來做探勘與分析,盡可能的還原出案發當時的連線情況。又因為種種原因例如

某個節點因為匿名性考量並未安裝上記錄連線 Log 的 Optional Part,或是因為 傳送的問題或是其他原因造成Static Subscribe Server 上面的 Log Pool 上可能沒 有完整的節點連線資訊,會有以下幾種狀況在後面的三節分別做討論。

分析時所給定的線索主要分成時間或是節點位址做為查詢的參數,而時間 可能是一個不確定的時間範圍內都是目標,位址方面也可能是模糊的一小段子網 域內的節點,必須考慮到這方面的搜尋需求。

4.5.1 完整節點

在理想的狀況下,在分析前可以獲得所需要的全部節點資訊,無論是本機 端就直接可以存取到的,或是向別台Static Subscribe Server 做查詢。依照站與 站之間的傳輸關係,在配合Serial Number 把重疊路徑的連線區別開來,按照下 面介紹的演算法1 即可得到所需要的結果。

我們將所有的連線記錄存放在 struct log pool[MAXLOG]; 這個結構裡:

struct log{

unsigned long int time; // Time Stemp unsigned long int last_ip; // Last Hop IP unsigned long int this_ip; // This Hop IP unsigned long int next_ip; // Next Hop IP unsigned long int sn1;

unsigned long int sn2;

};

三件事情: 1. A.this_ip == B.last_ip, 2. A.next_ip == B.this_ip, 3. A.sn2 ==

B.sn1 若皆成立表示B為A在該路徑上的下一站。

4-5: 確認路徑上的下一個節點

寫成函數的型態則如下:

Function FindNext(int index) { for(i=index; i<MAXLOG ; i++){

if (pool[i].last_ip == pool[index].this_ip &&

pool[i].this_ip == pool[index].next_ip) matchRoute = true; // 路徑順序符合 if(pool[i].sn1= pool[index].next_sn)

matchSN=true; // Serial Number 對應符合 if(matchRoute && matchSN)

retrun i; // 如果兩者皆符合,回傳該點為該路徑下一個節點 else

return -1; // 找不到符合節點 }

}

//演算法1:取得下一站節點(完全比對)

1. 從限制條件中(特定時間或是特定節點)過濾,取得指定的節點 pool[index].this_ip

2. 尋找該節點的下一站:

next = FindNext(index);

while( next != -1) {

將 next 這個節點加入節點清單;

next = FindNext(next);

}

3. 將節點清單中的節點依序取出,得到一條完整的連線路徑記錄。

4.5.2 缺少單一節點

先前提到有時候在還原路徑的時候會發生缺少節點的狀況,若在上一節所 提到的演算法中遇到無法由前後站與 Serial Number 對應找到下一站,也就是 FindNext() 中搜尋完整個節點集合,卻找不到 matchRoute 且 matchSN 的節點,

則判定為缺少節點,則中途再呼叫演算法2,在此節點後面在由前後站的關係,

找到下一站可能的節點集合,再次套入我們的演算法1,找到所有可能的節點。

如 圖 4-6 所示:當缺少一站,節點A要找路徑上下下站的節點資訊,只剩 下A.next == C.last 這個關係來確認,少了Serial Number的幫助,我們只能從時 間的間隔判斷,將所有符合的節點都列出來,分別去尋找各個點之後的路徑。如

4-6: 確認路徑上的下下站節點

//演算法2:模糊比對前後站節點資訊,取出可能節點

1. 取得指定的節點。

2. 只取出該節點的後一站資訊 3. 比對節點集合中的路徑資料

for(i=index; i<MAXLOG ; i++) {

if ( pool[i].last_ip == pool[index].next_ip ) return i; // 路徑順序符合,立即回覆該節點 }

4.5.3 缺少多個節點

如之前 4.1 節所提到,當攻擊者缺少兩個以上的節點,則可能無法有效的 還原當時完整的路徑。作為管理者身份,能夠擁有更多的節點資訊,可以使用刪 去法去掉比較不可能的節點,配合機率的估計將可能的節點都列舉出來,配合之 前提到的主動模式,在往後的時間裡事先預防,持續做追蹤。

第5章 實驗設計與結果

相關文件