sonickun.log

備忘録

家庭用プリンタがポートスキャンの踏み台になった話

 もりたこさん(@mrtc0)の記事を読んで,「Idle Scan」という送信元を隠して行うポートスキャンについて興味をもったので,自宅にあるネットワーク機器にも踏み台になりうるものはないかなーと探していたら,ありました.

 プリンタが.

 

PSPを利用したIdle Scan - もりたこの日記

 完全にもりたこさんの記事の二番煎じになりますが,書きます.
 
 

Idle Scan の概要

 あえて英語で書くと,こう.

  1. Probe the zombie's IP ID and record it.
  2. Forge a SYN packet from the zombie and send it to the desired port on the target. Depending on the port state, the target's reaction may or may not cause the zombie's IP ID to be incremented.
  3. Probe the zombie's IP ID again. The target port state is then determined by comparing this new IP ID with the one recorded in step 1.

 f:id:sonickun:20140909012814p:plain
 ( 引用:TCP Idle Scan (-sI) )

 なるほど.

 ※概要についてはもりたこさんがすごく丁寧にまとめてくれています.

 手動でパケットを送ってIdle Scanを行うことも可能ですが,Nmapの-sIオプションでIdle Scanを行うことができるそうです.
 
 

実験

 用意したマシンがこちら

  • 攻撃者: 192.168.11.9
  • ターゲット: 192.168.11.1
  • 踏み台(Brother DCP-J515N Printer): 192.168.11.2

 まずは踏み台となるプリンタの調査から.
 攻撃者側からプリンタに向けてhpingでSYNを送ってみる.
f:id:sonickun:20140909013807p:plain
 
 IPフラグメントIDに注目すると,数が(ほぼ1ずつ)単調増加していることがわかります.つまり,次に来るIDが何かを容易に推測でき,Idle Scanが成立します.(ほんとはIDはランダムになっているのが理想)
 
 
 そしてNmapのIdle Scanを使い,ターゲットのオープンになっている80番ポートのスキャンを実行します.
f:id:sonickun:20140909014725p:plain
 
 できた\(^o^)/
 

 これにより,攻撃者はターゲットに全く気付かれずにポートスキャンを行うことに成功しました.

Nmap の挙動

 せっかくなので,Nmapの-packet-traceオプションで挙動を追ってみました.
 f:id:sonickun:20140909015913p:plain
 
 最初に攻撃側からプリンタに向けて6パケットほど連続でSYNを送りIDのパターンを調査しています.そして

Idle scan using zombie 192.168.11.2 (192.168.11.2:80); Class: Incremental

 とあり,IDの変化パターンが"Incremental"であると判断しています.

 この時点でプリンタのIPフラグメントIDは"44219"です.

 次に攻撃側は送信元をプリンタのIPのに偽造したパケットをターゲットに向けて5パケット送信します.すると,下記のようにターゲットからプリンタに向けてパケットが返ってきました.

SENT (0.3325s) TCP 192.168.11.1:43401 > 192.168.11.2:80 SA ttl=38 id=38333 iplen=44  seq=3299246808 win=1024 <mss 1460>
SENT (0.3830s) TCP 192.168.11.1:43401 > 192.168.11.2:80 SA ttl=46 id=29500 iplen=44  seq=3299246809 win=1024 <mss 1460>
SENT (0.4341s) TCP 192.168.11.1:43401 > 192.168.11.2:80 SA ttl=50 id=16813 iplen=44  seq=3299246810 win=1024 <mss 1460>
SENT (0.4852s) TCP 192.168.11.1:43401 > 192.168.11.2:80 SA ttl=59 id=12389 iplen=44  seq=3299246811 win=1024 <mss 1460>
SENT (0.7861s) TCP 192.168.11.9:43641 > 192.168.11.2:80 SA ttl=50 id=11090 iplen=44  seq=1178307903 win=1024 <mss 1460>

この直後,攻撃者がプリンタに向けて1パケットを送信したところ以下のパケットが返ってきています.

RCVD (0.7943s) TCP 192.168.11.2:80 > 192.168.11.9:43641 R ttl=64 id=44224 iplen=40  seq=136725895 win=0 

 
 フラグメントIDが"44224",つまり,ターゲットに送った5パケット分IDの数が増加しているため,ターゲットのポートが開いていることがわかりました.
 
 

所感

 身近な情報家電にも脆弱性が潜んでいて驚きました.特にプリンターは常にネットワークに接続されている割にセキュリティ対策が甘いことが多いのではないかと思います.実際「プリンタ 脆弱性」でググるといろいろ出てきますね.(FTPの話とか)
 人の記事を読むだけではなく,実際に手を動かしてみると理解も深まるなあと思いました.