Scala と JSch を使った
Man-in-the-Middle Attack の実演
    ~SSHを安全に使うために~

            ymnk



            第1回東北情報セキュリティ勉強会(2009/0...
自己紹介(1)
•   山中淳彦(ymnk)
•   株式会社ジェイクラフト (JCraft,Inc.)
•   Java
•   最近は、Scala
•   Scala勉強会@東北
•   Eclipse.org の Platform Pro...
自己紹介(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” から
  – 暗号や認証の技術を利用して、安全にリモートコン
    ピュータと通信するためのプロトコル。パスワードなど
  ...
SSHとは(2)
• 1995年、 Tatu Ylönen がフリーウェアとして第
  一版をリリース(SSH1)
• 瞬く間に世界中にひろまる
• 同年12月、 Ylönen がSSH社を設立
    →ソースは非公開に
• 1996年、SS...
SSHとは(3)
•   RFC4250: Assigned Numbers
•   RFC4251: Protocol Architecture
•   RFC4252: Authentication Protocol
•   RFC4253...
SSHとは(4)
SSH Client               SSH Server
               接続要求


             バージョン番号通知


      鍵交換, 暗号化情報の交換, ホスト認証


 ...
SSH2クライアント JSch
SSH2クライアント JSch (1)
• JSch(Java Secure Channel)
• JCraft,Inc. 単独で開発
• SSH2のクライアント側を実装
    – shell, exec, scp, sftp, port-f...
SSH2クライアント JSch (2)
• 開発開始: 2003年1月
• 関連する自製ソフトウェア
 –   JZlib
 –   JCTerm
 –   JCTerm Plug-in for Eclipse
 –   SFtp Plug-i...
Man-in-the-Middle Attack
Man-in-the-Middle Attack (1)

•   中間者攻撃, bucket-bridge attack, MITM
•   暗号通信を盗聴したり介入したりする手法
•   攻撃者が犠牲者と独立した通信経路を確立
•   犠牲...
Man-in-the-Middle Attack (2)
SSH Client                               SSH Server




   Connection                        ...
Man-in-the-Middle Attack (3)
                                                             SSH Server
SSH Client
          ...
Man-in-the-Middle Attack (4)
中間者になる為の手法
LOCAL AREA NETWORK:
   – ARP poisoning, DNS spoofing
   – STP mangling, Port steal...
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/
•...
MITM Attack の実演(2)
Client               MITM                Server
           接続要求                接続要求



         バージョン番号...
実演
まとめ
まとめ
•   ホスト鍵を受け入れるときは慎重に
•   パスワード認証はさける
•   公開鍵認証を使う
•   SSH1プロトコルは設定で使えないようにする
ありがとうございました
Q&A
Upcoming SlideShare
Loading in...5
×

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

7,258

Published on

Published in: Education, Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,258
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
19
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

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

    Clipping is a handy way to collect important slides you want to go back to later.

×