Man-in-the-Middle Attack for SSH with Scala and JSch

  • 6,490 views
Uploaded on

 

More in: Education , Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,490
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
18
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Scala と JSch を使った Man-in-the-Middle Attack の実演 ~SSHを安全に使うために~ ymnk 第1回東北情報セキュリティ勉強会(2009/08/01)
  • 2. 自己紹介(1) • 山中淳彦(ymnk) • 株式会社ジェイクラフト (JCraft,Inc.) • Java • 最近は、Scala • Scala勉強会@東北 • Eclipse.org の Platform Project で committer • でも、普段は emacs でプログラムを書いてます
  • 3. 自己紹介(2) • ymnkの書いたソフトがBoeing 787へ搭載 • http://www.jcraft.com/news/06.18.2009pr.html
  • 4. 内容 • 自己紹介 • SSHとは • SSH2クライアント JSch • Man-in-the-Middle Attack • MITM Attack の実演 • まとめ
  • 5. SSH とは
  • 6. SSHとは(1) • Secure Shell(secsh) • Wikipedia: “Secure Shell” から – 暗号や認証の技術を利用して、安全にリモートコン ピュータと通信するためのプロトコル。パスワードなど の認証部分を含むすべてのネットワーク上の通信が 暗号化される。 • リモートログイン、scp、sftp、port-fowarding • SSH1(脆弱性や制限あり)、SSH2 SSHは、SSH社の登録商標(米国)です
  • 7. SSHとは(2) • 1995年、 Tatu Ylönen がフリーウェアとして第 一版をリリース(SSH1) • 瞬く間に世界中にひろまる • 同年12月、 Ylönen がSSH社を設立 →ソースは非公開に • 1996年、SSH社が SSH2を設計・実装 • 1999年、有志がフリーな頃のコードを元にfork →のちの OpenSSH • 2000年、OpenSSH が SSH2に対応 SSHは、SSH社の登録商標(米国)です
  • 8. 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社の登録商標(米国)です
  • 9. SSHとは(4) SSH Client SSH Server 接続要求 バージョン番号通知 鍵交換, 暗号化情報の交換, ホスト認証 セッション暗号化, ユーザー認証 データ通信
  • 10. SSH2クライアント JSch
  • 11. 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/
  • 12. SSH2クライアント JSch (2) • 開発開始: 2003年1月 • 関連する自製ソフトウェア – JZlib – JCTerm – JCTerm Plug-in for Eclipse – SFtp Plug-in for Eclipse – CVS-SSH2 Plug-in for Eclipse
  • 13. Man-in-the-Middle Attack
  • 14. Man-in-the-Middle Attack (1) • 中間者攻撃, bucket-bridge attack, MITM • 暗号通信を盗聴したり介入したりする手法 • 攻撃者が犠牲者と独立した通信経路を確立 • 犠牲者間のメッセージを中継 • 犠牲者に直接対話していると思わせる • 犠牲者の間のメッセージを横取り(盗聴) • 別のメッセージを差し挟む (改竄) • HTTPS, SSH, IPSEC, PPTP
  • 15. Man-in-the-Middle Attack (2) SSH Client SSH Server Connection Connection Authentication Authentication Transport Transport TCP/IP TCP/IP Normal SSH Session
  • 16. Man-in-the-Middle Attack (3) SSH Server SSH Client MITM Connection Connection Connection Connection Authentication Authentication Authentication Authentication Transport Transport Transport Transport TCP/IP TCP/IP TCP/IP TCP/IP SSH Session with an Active Man-in-the-Middle Attack
  • 17. 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
  • 18. Man-in-the-Middle Attack (5) 中間者になった後の攻撃手法 • Injection • Key Manipulation • Downgrade attack
  • 19. MITM Attack の実演
  • 20. MITM Attack の実演(1) • JSchをSSHサーバーとして振舞えるように改造 • プログラムは Scala で記述 • http://github.com/ymnk/man-in-the-middle-attack/tree/ • 攻撃者は中間者の位置にいることを仮定 • ホスト認証をないがしろにすると通信の盗聴、改 竄が成功すること等を確認
  • 21. MITM Attack の実演(2) Client MITM Server 接続要求 接続要求 バージョン番号通知 バージョン番号通知 鍵交換, 暗号化情報の交換 鍵交換, 暗号化情報の交換 ホスト認証 ホスト認証 セッション暗号化, セッション暗号化, ユーザー認証 平文 ユーザー認証 データ通信 データ通信
  • 22. 実演
  • 23. まとめ
  • 24. まとめ • ホスト鍵を受け入れるときは慎重に • パスワード認証はさける • 公開鍵認証を使う • SSH1プロトコルは設定で使えないようにする
  • 25. ありがとうございました
  • 26. Q&A