IVRE是一個網路滲透測試工具整合框架,可匯入滲透測試工具的掃描結果,儲存於資料庫內並以網頁的方式展示,以利分析與判讀。前面文章已經示範了如何安裝IVRE,並扼要說明過基礎操作方法,因此本文將接著介紹其進階使用方式。
由於IVRE需仰賴各種資料來源以完備其資料,方能呈現給管理者更豐富的資訊,因此必須整合各種工具讓IVRE讀入其Log檔,或讀取其輸出並匯入資料。這裡會依序介紹如何轉發流量、匯入Syslog資料、從p0f的Log讀取資料,從brother的Log繪製flow關係圖,目的是要讓IVRE的資料庫更為完善。
轉發Host與Container流量
由於使用Docker的方式來安裝及使用IVRE,因此IVRE無法直接與外部網路連接(僅可透過NAT連外)。但IVRE若能直接讀取外部網路的流量,可以大幅度補齊其所需資訊。因此,此處將示範如何將Host的流量轉發至ivreclient的Container,在此使用iptables做流量轉發。
在操作開始前,需先透過以下指令確認ivreclient是否正執行中:
docker ps
倘若非執行中,可以利用start指令將之執行:
docker start ivreclient
在確認ivreclient啟動後,再使用attach指令連入ivreclient:
docker attach ivreclient
連入後,先使用下列指令確認ivreclient的IP為何:
ip addr show
輸出結果如圖1所示,確認目前ivreclient的IP為172.17.0.3。
|
▲圖1 確認ivreclient IP。 |
接著回到Host,先確認ip_forward為1(理論上在安裝docker之後應已被設定為1),讓封包能轉發:
cat /proc/sys/net/ipv4/ip_forward
若不是1的話,請執行下列設定:
sysctl -w net.ipv4.ip_forward=1
接著,輸入以下指令轉發TCP封包:
iptables -t nat -A DOCKER ! -i docker0 -p
tcp -m tcp --dport 23:65535 -j DNAT --to-destination 172.17.0.3:23-65535
由於筆者的22通訊埠(Port)必須保留給Host主機使用,因此筆者設定23以上(23:65535)的通訊埠收到的封包轉發給172.17.0.3(ivreclient的IP)。
同樣地,亦轉發UDP封包,由於沒有特殊需求,因此轉發所有Port的封包:
iptables -t nat -A DOCKER ! -i docker0 -p
udp -m udp --dport 1:65535 -j DNAT --to-destination 172.17.0.3:1-65535
接著檢查規則是否正確執行,結果如圖2所示,可以看到TCP和UDP封包會轉發至172.17.0.3,指令內容如下:
iptables -n -t nat -L | grep 172.17.0.3
|
▲圖2 iptables確認轉發封包至172.17.0.3。 |
可以做一個簡單的驗證,回到ivreclient,並使用tcpdump側錄封包,確認ivreclient有收到從Host端轉發的封包(若未安裝tcpdump須先行安裝),接著從外部主機開啟Host主機的80通訊埠,可以觀察到如圖3所示的輸出。
|
▲圖3 使用tcpdump驗證轉封包是轉發。 |
至此,已確認Host主機收到的流量會轉發至ivreclient,之後可以在ivreclient執行各種套件,例如p0f或Bro,開始收集封包以進行之後的分析並匯入各種資料,以完備其資料庫。
Syslog資料的匯入
IVRE可以匯入Syslog的Log資料以完備其資料庫。可以將其他主機的Syslog複製到ivreclient並匯入,也可以直接匯入在ivreclient收到的Syslog,但由於在ivreclient中預設並未安裝iptables,因此這裡採取匯入外部資料的方式。
首先,必須律定其格式以便後續匯入。在要匯出Syslog的主機執行下列指令,以便在Log中加入IPTABLES的相關關鍵字:
iptables -A INPUT -j LOG --log-prefix
"IPTABLES/INPUT: "
iptables -A OUTPUT -j LOG --log-prefix
"IPTABLES/OUTPUT: "
iptables -A FORWARD -j LOG --log-prefix
"IPTABLES/FORWARD: "