Configure SSH on Windows 10 | Configure SSH Server | Free SSH Server
Man-in-the-Middle Attack for SSH with Scala and JSch
-
Upload
atsuhiko-yamanaka -
Category
Education
-
view
7.080 -
download
0
Transcript of Man-in-the-Middle Attack for SSH with Scala and JSch
Scala と JSch を使ったMan-in-the-Middle Attack の実演
~SSHを安全に使うために~
ymnk
第1回東北情報セキュリティ勉強会(2009/08/01)
自己紹介(1)
• 山中淳彦(ymnk)
• 株式会社ジェイクラフト (JCraft,Inc.)
• Java
• 最近は、Scala
• Scala勉強会@東北
• Eclipse.org の Platform Project で committer
• でも、普段は emacs でプログラムを書いてます
自己紹介(2)
• ymnkの書いたソフトがBoeing 787へ搭載• http://www.jcraft.com/news/06.18.2009pr.html
内容
• 自己紹介
• SSHとは
• SSH2クライアント JSch
• Man-in-the-Middle Attack
• MITM Attack の実演
• まとめ
SSH とは
SSHとは(1)
• Secure Shell(secsh)
• Wikipedia: “Secure Shell” から
–暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。パスワードなどの認証部分を含むすべてのネットワーク上の通信が暗号化される。
• リモートログイン、scp、sftp、port-fowarding
• SSH1(脆弱性や制限あり)、SSH2
SSHは、SSH社の登録商標(米国)です
SSHとは(2)
• 1995年、 Tatu Yl nen ö がフリーウェアとして第一版をリリース(SSH1)
• 瞬く間に世界中にひろまる
• 同年12月、 Yl nen ö がSSH社を設立
→ソースは非公開に
• 1996年、SSH社が SSH2を設計・実装
• 1999年、有志がフリーな頃のコードを元にfork
→のちの OpenSSH
• 2000年、OpenSSH が SSH2に対応
SSHは、SSH社の登録商標(米国)です
SSHとは(3)
• RFC4250: Assigned Numbers• RFC4251: Protocol Architecture• RFC4252: Authentication Protocol• RFC4253: Transport Layer Protocol• RFC4254: Connection Protocol• RFC4256: Generic Message Exchange Auth• RFC4344: Transport Layer Encryption Modes• RFC4419: DH Group Exchange for Transport Layer• RFC4462: GSSAPI Authentication and Key Exchange• RFC4335 、RFC4716、RFC4819、RFC4255• DRAFT: SSH File Transfer Protocol
SSHは、SSH社の登録商標(米国)です
SSHとは(4)
接続要求
バージョン番号通知
鍵交換, 暗号化情報の交換, ホスト認証
データ通信
セッション暗号化, ユーザー認証
SSH Client SSH Server
SSH2クライアント JSch
SSH2クライアント JSch (1)
• JSch(Java Secure Channel)
• JCraft,Inc. 単独で開発
• SSH2のクライアント側を実装
– shell, exec, scp, sftp, port-forwarding
• J2SE(1.4以降)、J2ME CDC・CLDC(MIDP2.0)
• 修正BSDライセンス
• Eclipse(3.0以降), NetBeans(5.0以降)に同梱
• http://www.apache.org/licenses/exports/
SSH2クライアント JSch (2)
• 開発開始: 2003年1月
• 関連する自製ソフトウェア
– JZlib
– JCTerm
– JCTerm Plug-in for Eclipse
– SFtp Plug-in for Eclipse
– CVS-SSH2 Plug-in for Eclipse
Man-in-the-Middle Attack
Man-in-the-Middle Attack (1)
• 中間者攻撃, bucket-bridge attack, MITM
• 暗号通信を盗聴したり介入したりする手法
• 攻撃者が犠牲者と独立した通信経路を確立
• 犠牲者間のメッセージを中継
• 犠牲者に直接対話していると思わせる
• 犠牲者の間のメッセージを横取り(盗聴)• 別のメッセージを差し挟む (改竄)• HTTPS, SSH, IPSEC, PPTP
Man-in-the-Middle Attack (2)
Authentication
Transport
Connection
SSH Client
Authentication
Transport
Connection
SSH Server
TCP/IPTCP/IP
Normal SSH Session
Man-in-the-Middle Attack (3)
Authentication
Transport
Connection
SSH Client
Authentication
Transport
Connection
TCP/IP
SSH Session with an Active Man-in-the-Middle Attack
Transport
MITM
Transport
Authentication
Connection
Authentication
Connection
TCP/IP TCP/IPTCP/IP
SSH Server
Man-in-the-Middle Attack (4)
LOCAL AREA NETWORK:
– ARP poisoning, DNS spoofing
– STP mangling, Port stealing
FROM LOCAL TO REMOTE (through a gateway)
– ARP poisoning, DNS spoofing, DHCP spoofing
– ICMP redirection, IRDP spoofing, route mangling
REMOTE:
– DNS poisoning, traffic tunneling, route mangling
WIRERESS:
– Access Point Reassociation
中間者になる為の手法
Man-in-the-Middle Attack (5)
• Injection
• Key Manipulation
• Downgrade attack
中間者になった後の攻撃手法
MITM Attack の実演
MITM Attack の実演(1)
• JSchをSSHサーバーとして振舞えるように改造
• プログラムは Scala で記述• http://github.com/ymnk/man-in-the-middle-attack/tree/master• 攻撃者は中間者の位置にいることを仮定
• ホスト認証をないがしろにすると通信の盗聴、改竄が成功すること等を確認
MITM Attack の実演(2)
接続要求
バージョン番号通知
データ通信
セッション暗号化, ユーザー認証
Client Server接続要求
バージョン番号通知
鍵交換, 暗号化情報の交換ホスト認証
データ通信
セッション暗号化, ユーザー認証平文
MITM
鍵交換, 暗号化情報の交換ホスト認証
実演
まとめ
まとめ
• ホスト鍵を受け入れるときは慎重に
• パスワード認証はさける
• 公開鍵認証を使う
• SSH1プロトコルは設定で使えないようにする
ありがとうございました
Q&A