Fuzzer作るための算段   by足軽

uhm...i don't know how to make fuzzer.

ということで、色んな基礎知識を立てれば、Fuzzerを作る知恵が出てくる
んじゃないかって思いました思いました。

まず、セキュリティ・キャンプでもらった本を通読できるようにする。

Linuxネットワークプログラミングバイブル

Linuxネットワークプログラミングバイブル


ネットワーク知らんことには何も書けんぇだろ。っちゅーことで。

次が非常に悩むんですが、やっぱり

Violent Python: A Cookbook for Hackers, Forensic Analysts, Penetration Testers and Security Engineers

Violent Python: A Cookbook for Hackers, Forensic Analysts, Penetration Testers and Security Engineers

これ読んで、C言語でもPythonでもネットワークプログラミング(+α攻撃)も
できるようになったほうがいいなと思いました。
Scapyの使い方もちょっと詳しくのってた気がします。
(パケットパケット投げる投げる)

けどねぇ、これだとFuzzerできないよなー。

なんてたって…Fuzzingってそもそもなんだよ!!
ってなるからっす。

確かにキャンプでファジングやったけでも、fuzzerの概論なんて知らないよ!!

っていうことで、ViolentPythonの次読む本は…これだ!

って言いたんだけど、すごい悩んでいます。
先に、日本語で理解したほうがいいのか。
直接英語読むか。


日本語の方は、ファイルファジングって感じなんで、バイナリの知識が要求されます。
英語の方は、純粋にファジングの概論がわかるのでいいんですが、
英語です。読むのに時間かかります。

uhm...まぁいいや。

とりあえず、英語の方から読みたいと思います。
(じゃあViolentPythonは簡単に読めんのかってなるけど、ViolentPythonは
内容がすごい簡単なので、すぐに読めると思う(適当))

Fuzzing for Software Security Testing and Quality Assurance (Artech House Information Security and Privacy)

Fuzzing for Software Security Testing and Quality Assurance (Artech House Information Security and Privacy)

の次に

リバースエンジニアリング ―Pythonによるバイナリ解析技法 (Art Of Reversing)

リバースエンジニアリング ―Pythonによるバイナリ解析技法 (Art Of Reversing)

。。。

あれ?けど、リバース・エンジニアリング難しいよな?理解出来んの?

ってなると思うから、

たのしいバイナリの歩き方

たのしいバイナリの歩き方

をリバース・エンジニアリングの前に読む。

あれあれ?それも読めんのか?

さすがに読めると思うけど、ちょっと怖いので、

Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際

Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際

これを愛甲さんの本の前に復習しておきます。(これはちゃんと読んだからな?)

まぁ…とりあえずこれぐらいやれば…

けど、さすがにこれだけの知識では知恵になるけど、作ることは難しい。

なんでかっていうと、Pythonでfuzzerを作るけど、
今までそんな大きいプログラミングしたことがない!!(ドヤ

だから、人のコード見て勉強しようと思います。

linux/net/caif/cfpkt_skbuff.c
linux/net/core/pktgen.c
linux/Documentation/networking/pktgen.txt
>ってそれC言語やん。<

Sulleyのソースなんか読んだら楽しいかもですね。

はい。がんばります。

逆fizzbuzz問題 by 足軽

NW組2013でお馴染みの @y1r96 のゆーいちろーくんが、
『足軽さん!差し支えなければ、逆FizzBuzz問題のソース書いてください!!』
と突然言われました。

心優しい僕はこう答えました。
『逆FizzBuzzってなんだい?』

しかし、彼は
『ちっ、しらねぇのかよ。』
と一言放ちました。

辛いので、ぐぐってみたらこんなサイトを見つけました。

逆FizzBuzz問題の解説っぽいサイトです。

なるほど。FizzBuzzの逆ってことだね。

理解した僕はすぐさま、ソースを書きました。めでたしめでたし。

jud = lambda x: 3 if x == 'fizz' else 5

def fizz_buzz(st):
    if len(st)==1: return(jud(st[0]))
    st_be = jud(st[0])
    en_be = jud(st[-1])
    
    if len(st)==2:
        if st_be==en_be:
            return (6,9) if st_be==3 else "Oops..." 
        else:
            return (9,10) if st_be==3 else (5,6)
    else:
        mu_be = jud(st[1])
        def ans(x,y,z):
            try:
                while True:
                    ran = range(x,z+1)
                    if True in [i%y ==0 for i in ran]:
                        if len([i for i in range(x+1,z) if i%3==0 or i%5==0]) != 1:
                            return ans(x+jud(st[0]),y,z)
                        else: 
                            return (x,z)
                    else:
                        z += jud(st[-1])
                        return ans(x,y,z)
            except RuntimeError:
                return "Oops..."
    return ans(st_be,mu_be,en_be)

if __name__ == '__main__':
    print "Usage: input fizz or buzz ... and only 3..."
    while True:
        print fizz_buzz(raw_input(":").split())


"""
$python hoge.py
Usage: input fizz or buzz ... and only 3...
:fizz
3
:buzz
5
:fizz buzz
(9, 10)
:buzz fizz
(5, 6)
:fizz buzz fizz
(3, 6)
:fizz fizz
(6, 9)
:fizz fizz buzz
(6, 10)
"""


足軽『ざっとこんなもんよ。』

ゆういちろう『ソース読んでも理解できない…なんて僕は馬鹿なんだ!』

足軽『気にすることはない、さぁ学べ少年!』

ゆういちろう『いや、お前のソースが汚いからじゃ』

足軽『はひっ』


〜終わり〜


本日のおすすめ:
1: jud = lambda x: 3 if x == 'fizz' else 5
19: if True in [i%y ==0 for i in ran]:
20: if len([i for i in range(x+1,z) if i%3==0 or i%5==0]) != 1:

セキュリティ・キャンプ2O13 〜感想編〜 ~secret base~

はい、セキュリティキャンプ万歳です。
いやぁ〜人生でこんな楽しいことあるのかーって思いましたね。

【参加決定まで〜参加決定直後から当日まで】


結果発表の日におもむろにメール箱こじ開けたら、
『参加出来ます』『道のりは〜・・・』って書いてて、

え?え?え?受かったの!?

マジでぇ!???
ふぅうーー!!!
今夜はコーラパーティーだー!!!

って感じでルンルン気分でじりずとTwitter人に
『”セキュキャン通ったよ!”』って送りました。はい。

ここで奇跡的な出来事に
僕(足軽)とじりず(じりず)とアリス(アリスちゃん)はセキュキャン前から
チーム組んでて、『こーいうことできたらいいなー』っていう話をしてて、
いっきに受かったので奇跡やなと思いました。


とりあえず、自分の出来ることやろうと思いまして、
Teacherからの事前課題(ツールの使い方)などを見てました。

nmap △ -> △ -> ○
wireshark △ -> △ -> ○
tshark + editcap -> tcpdump -> ○
etherape △
vmware player ○
teraterm/Poderosa ×
WinSCP × (not have to)
netcat × -> △
metasproit ×
hping2 -> Scapy○
Snort -> △

こんな感じで、とりあえずツール並べて、成長したなーって
思ったら、付けたりしてました。

・技能(最低限コマンド操作はできてほしい)
Linuxのインストール
Linuxのコマンドライン操作
Linuxのログ目grep
ネットワークのトラブルシューティング系のコマンド操作

Linuxのログ目grepって抽象的過ぎて泣きそうになっていました。


僕の大好物であるScapyをひたすらやってました。
講義で使うか使わないかは別にして、
非常に大好きです♡


毎日tcpdumpでパケットキャプチャして見たり
Nmapで毎日同じローカル環境をスキャンしたりしてました。

f:id:reonreon3reon:20130828015008p:plain

非常に有意義な毎日を過ごしてましたね_:(´ཀ`」 ∠):_

実践 パケット解析 第2版 ―Wiresharkを使ったトラブルシューティング

実践 パケット解析 第2版 ―Wiresharkを使ったトラブルシューティング

マスタリングTCP/IP 入門編 第5版

マスタリングTCP/IP 入門編 第5版

この2冊…貰いました!!!

てか持ってました!!!ふぅー

Twitterからの反響はですね、
3日で80人ぐらいにフォローされましたー。
びっくりですね☆

【壱日目】

初日、僕は4、5時ぐらいに起きて、支度をして、ルンルン気分で服選んで、
愛する母に別れを告げて、新大阪という駅に着きました。

すると、あれ?Facebookで見たことあるような顔…

しかし、二人は顔を合わせません。



距離わずか1mの所でもTwitterで挨拶する2人。

ここでようやく『初めまして〜…』

僕と彼はずっと新大阪から東京まで @potetisenseiの悪口を言ってました(嘘)

方向音痴だったので彼がついてきてくれてみんなと『銀の鈴』で待ち合わせに成功しました。

ここで初めて、@lambdaliceに会いました。すごいファンキーな格好でした。

結構な人数でそこに集まったので、コミュ障の僕からしたら結構苦痛でした(笑い

@yagihashoo氏が僕を盗撮しました。

f:id:reonreon3reon:20130828024625p:plain

ここで初めて、@zillizと会いました。


あれ?前置き長いな。ごめん。


Winnyとボクたち(セキュリティ基礎)&& NICTER/DAEDALUS〜


マキシマム ザ ホルモン "え・い・り・あ・ん" - YouTube

3:00から聴いてみてください
やはり、Winnyは一般的な人から疎遠されるツールです。
そこでボクたちがいかにそれを防止するか。という話し合いもしました。

その次はNICTの井上大介さんの特別講義。
最初に井上さんの秀逸なネタで会場を一気に引きつけ本題へ入っていきました。
内容はnicterやDAEDALUSなどの攻撃可視化エンジンについて説明してくれました☆


ネットワーク攻撃可視化・分析技術 - nicter #DigInfo - YouTube


サイバー攻撃をリアルタイムに可視化、警告を発する「DAEDALUS」 #DigInfo - YouTube

などなど…

✌( ՞ਊ ՞)✌イェェェェェェェ
SF映画の中みたいじゃないかー!!

>しかし、カレー辛過ぎてね、水ね、めっちゃね、飲んでね、尿意がね、ヤバくてね<


〜『インターネット関連で死者が出るのは悲ピー』とは何か〜

ボクたちは、インターネット上で生きる生物なので、いかに『倫理』が問われるかという
話を、ハッカー検事こと大橋検事が講師として、お話をしていただきました。

『つい出来心で…』なんて世の中では通用しません。
自分が捕まるだけでなく、家族にも影響を与える。

ココロに響く言葉を連ねる大橋さん。ボクたちはより犯罪を犯すことがいかに怖いかということを知れたと思います。


グループワークで色んな話し合いをしました。
で疲れたので部屋に行って寝ましたzZZ...


【貳日目】

ボクたちNW組は、各々分けられたクラスに行って講師方々の話を聞きました。

ysd先生とkwgt先生でした。

 それから、キャンプの醍醐味である攻撃的な実践や今まで見たいこと無い数GBのパケットの解析です。
最初にysdさんの講義で、実際にパケットを作ったり、投げたり、受け取ったり、見たり、しました。
基礎と言えば基礎です。その基礎があってこその応用でした。非常に面白い講義でした。

kwgtさんの講義でパケット解析とApacheのログ解析を主にしました。
その中でも数GBのも及ぶパケットの解析が印象的でした。
その数GBのパケットを解析するのはWiresharkがメインでした。

もちろん、セキュリティキャンプでも意識が高い(笑)私は、Wiresharkを使うことはお手の物だと思ってました。
しかし、ここがセキュリティキャンプの『基礎』と『実践』の違いを見せつけられる所です。
何が、どこが、なんで…。講師が求めている『問題ある点』を探すことは容易ではありませんでした。
そこでSnortシグネチャを書いたり、パケット眺めたり、隣の子より早くできたら鼻で笑ったり。
急がしいって所の騒ぎではなかったです。この『急がしい』==『興奮、楽しさ』なのが、

講師の腕だと思わされました。

ちょーーーーー楽しかったです!
✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌


【参日目】

3日目は,少し早めに朝食を食べて,企業に見学してきました。
企業見学は,迷わずラックさんにしました。はい。迷わず。(ここ重要)

率直にいうと、ここは秘密基地かなんか?って思わされるほど超かっこいい場所でした。

テレビで見たことはあるんですが、全く違う印象でした。


そのあと、mymtさんとktmさんの講義です。

その次は、mymtさんの偽装通信ってどうするのか、ktmさんのNmapからの機器特定、ファジングによる脆弱性発見、などの攻撃も印象に残るばかりです。
mymtさんの偽装通信というのが今まで聞いたことが無くて、ツールを使っていてもどういう仕様になっているか全く分かりませんでした。しかし、使ってたりmymtさんの講義を聞いているうちに「あっこれなら実装出来るんじゃないか」と考えたりすることも出来ました。
情報を外に持ち出すのにどういう条件が満たされているかということも知ることが出来ました。
『偽装通信』と聞くと、9割9分の人が悪いように聞こえると思います。実際私もそうでした。
しかし、mymtさんのDNS偽装によって、守りとしても使えることが分かったのが面白かったです。


私の中でktmさんの講義がもっとも興味そそられるものでした。
Nmapは日頃から使っていたのですが、どういうにパケットを投げているかはあまり詳しくありませんでした。
そこで、実践的に色んなオプションを使って布で隠された機器を特定することにも成功しました。
同じネットワークにある機器なら大抵攻撃出来ます、その機器からどういうレスポンスがあるかみて、
ネットワークプロトコルをより深く知ることが出来ました。

IPA会長が「学生のうちに何かひとつ世界一になってください」と言われたので、私はファジングで何か世界一をとろうと思いました。



夕食を食べた後は,BoF(バッファオーバフローではありません)で
僕とじりずは一緒に『アセンブリ短歌』というものに挑戦しました。

アセンブリを五七五七七にして、いかに綺麗に見せれるか競う(?)ものです。

講師が一生懸命『ここで韻を踏んでいて…』という熱意だけ伝わりました。


【肆日目】

〜CTF〜

午後から夜にかけては,CTF(Capture The Flag)

もちろんNW組だったので、ネットワーク系の問題を攻略しにかかりました。

なんやかんやでゆったんたちとネットワーク問題といて

ネットワークだけで Pt.700しかとれまへんでした…

ショッキング。

見事最下位でした


『後日談』悔しい思いをした僕は
今日8/28壱日で akictf7問解いて『わぁーイ』状態です。


【伍日目】

 グループワークの発表しました。
 yagihashoo氏のプレゼン力がありすぎて、優勝?しました。

f:id:reonreon3reon:20130828033518p:plain

こんなにもたくさんのものをもらいました。

Linuxネットワークプログラミングバイブル

Linuxネットワークプログラミングバイブル



空飛ぶPython即時開発指南書 (Programmer’s SELECTION)

空飛ぶPython即時開発指南書 (Programmer’s SELECTION)


たのしいバイナリの歩き方

たのしいバイナリの歩き方


を貰いましたー。

色んな助けてくださった方々。直接は会ってなくても陰で支えてくださった方々。
非常に心より感謝してます。本当にありがとうございました。

はい、こんな愉快な仲間達と知り合える、共に成長出来る、そんな環境を作ってくれるのがこの『セキュリティキャンプ』なのです。私は、まだまだ未熟者なのでこれからも卒業生や講師様達と仲良く健やかに成長していきたいと思いました。


【追記】キャンプの報道まとめ

日経新聞http://www.nikkei.com/article/DGXNASDD1306J_T10C13A8TJ2000/

読売新聞:http://www.yomiuri.co.jp/net/news0/national/20130813-OYT1T01130.htm

NEWS ZEROhttp://www.ntv.co.jp/zero/mygeneration/index.html

f:id:reonreon3reon:20130828034327p:plain
少しだけテレビ出ましたー

Pythonistaとして少し花が咲いたと思った瞬間

>>> a
<8_1.pcap: TCP:6728 UDP:899 ICMP:149 Other:212>
>>> 

普通にキャプチャしたパケットがあるじゃろ?

>>> b = a[Raw].filter(lambda x: True in [i in x.sprintf("%Raw.load%") \
...  for i in ['GET','POST']])
>>> 
>>> b
<filtered Raw from 8_1.pcap: TCP:15 UDP:0 ICMP:0 Other:0>

こんな書き方が出来るとは思わなくて、感動して…うん。

山月記を読んで

私はこの山月記を読んで純粋に面白いと思いました。
持論ですが、この李徴は人喰虎になったと書かれていますが、本当は狂人の比喩として虎が使われたんじゃないかと思っています。端的に言えば、彼はサイコパスか多重人格かなんかの精神病にやんでしまったんじゃないかと思っています。なぜそう思ったかいくつか例を挙げたいと思います。彼は、生まれてからずっと天才として扱われていました。博学才穎だから若くして進士にも合格して、名声を広めました。そして、彼は自信過剰のあまり、詩家となりました。だがしかし、その結果家族を養うこともできない社会人としては低レベルどころか、社会人失格ほどに扱われました。再び、官吏として再就職をするが、やはり自尊心はズタボロになったはずです。病むに病んだ結果、夢遊病者のように夜中発狂して殺戮者となってしまったんじゃないかと思います。ここで、重要なのが、誰も虎となった李徴を見ていないということです。円3を襲いかかろうとした時だって、円3たちは残月の光をたよりに歩いていたぐらいの暗さなので、見えるはずがありません。李徴がいう「我が酷悪な今の外形」とは、昼間に殺戮を繰り返したときに服に付着した返り血などを見られたくない、否、純粋に殺戮者としての「今」の姿を見られたくないだけなのかもしれません。そして、李徴はこうも言っています、「一日の中に必ず数時間は、人間の心が還って来る。」これもどういうことかというと、多重人格の一人のサイコパスとして一日のほとんどを殺戮を繰り返しているが、時々、元の自分が還ってくると言いたいんじゃないかとも思います。最後に私が思うに、人間は虎になんてなりません。それに、この話の著者である中島敦氏が人間が虎に変身するようなファンタジーな話を書くとも思えません。きっと、人間の根本的にある憎悪や嫉妬、色々な感情を具現的に表現した場合、それが虎という恐ろしい生き物と酷似してるんじゃないかなと思いました。非常に考えさせられる物語だと思いました。

44K744Kt44Ol44Ki44Gq44OW44Ot44KwMg==

AN0ckd0QzRFRDNDJEN0s0N0QzS0RDNPxGN08Uc0QzTHRDNLpGN0sEd0QzTqRDNPpHN08EW0QzRLVTNhlHN0sUT1EXZZRDNH5GN0cEW0QzRmdzN5J0QnJnanlFVqd2bUp2ZKpnanlESuxmSvo2Zidjan9meqdWYip2ZaBlanBHUqdWYy1mbJ5Wbol0LuZXcup2ZhJXbtlFTwxGcQp2ZwxEcnl1NqdmWUp2ZaZnanp1LqdWY3o2Zh9Cbpp0Mqd2bIp2ZhJmanlldqd2bMp2ZaZman9meqdmY3o2ZaZnanBHUqdWSJt0Q1tCOs9UY6lWdrgDblFGWwV2TCdWdPNUa19kQ2V3TCx2KPJkbr8kQq90TBdWZPFka19kQrtyTCJXdhhFcl9kQytSYaJXdtFUb19UQqtyTCF3TPJEaP9kQoVXYYBXZPJkaP9kQnV3TDlWdPJkd19kQttyTDt2KPJEcr8kQstyTC52KPF0Zn92S0QzRwRDNHVXNwVGb0QzSDRDNL9GN0sEd0QzSxQDNLtGN080R0QzSqRDNPpHN0s0d0QzRuRDNDJEN0cEc0QzR1VDclxGN0s0Q0QzSFRDNHdHN0cET0QzRqRDNHZGN0ckb0QzRadzN5lUNiNEU1wUatVzbTZ2QnJHbnVDWqdWYq92aMNDbrl0ZnVzbXJDN0c0b1wkMRZjSltWSP1mYo90VrFXdPJUcP9kQwtyTBdWVOVlU19kQyV3TEdWZPRkdP9ERv90TDtWdPNkcl9ERvtyTEN3KPREbrc1Lu90VM52KXpkal9kQptyTDlWZlFzaPFWSr90TCx2KPJEcn92S0QzRmRDNLRFN0ckb0QzRaRDNH1EN0MkQ2sUYMVDTxxEN0ckc3cTeUVDTxZDN0c0b0QzSDVDTpFUNyNEW0QzRyVTWrgFN0cET0QzSLRDNHtCN0cEW0QzRtRDNDJ0N3kXV1AXZsVTN1VHN0cUd1E2UjRDNHZ3QnJ3a1RjcsZ3b6p2Zh5manllYqdWWUp2ZZJWb0xkdslWNYp2ZwxkanplZqdWYip2ZZRlanl1LqdWW2p2ZhpmanlFVqdWWip2ZaBlanFmaqd2bM1GciNjanplZqdWWv8WcihkanpldqdmY3o2ZaZmanp1L2ZXSqp2Za5manpFVqdWW2p2ZhBlanp1L2ZXSrt0Q19kQrtyTCJXdTRTalNlN1V3TCB3KTlDbl9kQptyTDV3KPNkcl9ERwV2TEFXdPREa190QvtyTEh2TPRkdP9ERxtyTDtWdTljbP9kQvtyTCBXdPF0ZVxWURV2TCFXdPNUa19UQnV2TClWdTRDb1lGczV2TCF3KPJUc19kQvtyTC52dvtkNLlnY1IWayRDNHVXNZdVS1UzUmRDNHFHN0s0S0QzRyZzShxEN0cUb0QzSDRDNLpEN0cka0QzRmRDND9EN0c0Q0QzT4QDNDJEN0cEV0QzRFRDNHtGN0skS1o1R4QDNLRFN0ckb2kUb2RDNHxEN0cka0QzRmRDNDBFN0c0bDdmcvFXSEp2Zv9ianpldqdmWvo2ZZRlanFmZqdmWuZndJhkd2lURLNUdtRmb1dFN190TCF3KPJEaP9kQo9UZxo2Tt92ar80QrV3U0oWdPJUaP9kQwV3TCp2KPJ0bP9kQsV2TC92KPJEc19kQnV3TDlWdPJkaP9kQx90TChWdPJEbP9kQsV3TCh2TPJkd19kQstyTC52KPF0Zn92S1wUdLVjY20EN0s0Q0QzRLVDTpdlNL1Ge0QzRyRDNHFHN0s0S0QzRrQDNHpFN0M0Q==


答え欲しかったら言ってね☆

ARPキャッシュポイゾニング@実践パケット解析

目的
孫氏の兵法により、「攻撃がわからないと防御ができない」という精神に則り、私も攻撃者としての技術の一つとしてARPキャッシュポイゾニングを試してみることにします。


用意
IPアドレス
192.168.1.4(Mac...解析される側)
192.168.1.17(Backtrack5...解析する側)

使うツール
ettercap (tcpdump wireshark Scapy .etc パケットを取れればどれでも良い)
Scapy (これも解析するならどれでもいいけど、俺はこよなく愛してる)

使う言語
Python (Scapyでいい)


各々がローカルネットワークにいる。


某競技プログラミングサイトを使って実験します。

方法
1.ettercapでARPキャッシュポイゾニングします
2.ettercapでキャプチャしたパケットをScapyで解析します
3.解析したのをPythonでごみょごみょして、ソースコードを取り出します。
4.それを某サイトに送ります。
5.正答します。


1.ettercapでARPキャッシュポイゾニングします

パケットをキャプチャする
f:id:reonreon3reon:20130801151715p:plain


ettercap -T -M arp -i eth1 /192.168.1.4/ /192.168.1.1/ -w 01.pcap

このキャプチャを始めたら、

192.168.1.4が何も知らずに
f:id:reonreon3reon:20130801152139p:plain

普通にPOSTします。
ちなみにソースは

using System;

namespace AOJ
{
	class Program
	{
			static Void Main(string[] args)
			{
					Console.WriteLine("Hello World");
			}
	}
}

2.ettercapでキャプチャしたパケットをScapyで解析します
3.解析したのをPythonでごみょごみょして、ソースコードを取り出します。
二つ一気にやります。


f:id:reonreon3reon:20130801152758p:plain

192.168.1.4がどの言語を使ってるかはあらかじめ分かっておいてね☆
分からなかった場合の対処法もあるけど、今回はめんどくさい


ソースを投稿しているので
'POST'
っていう文字列を探します。

f:id:reonreon3reon:20130801154045p:plain
f:id:reonreon3reon:20130801154245p:plain
f:id:reonreon3reon:20130801154440p:plain

これをコピー&ペーストすれば、

4.それを某サイトに送ります。
5.正答します。

f:id:reonreon3reon:20130801154609p:plain

大せーかい!!



まとめ
実際、成功した時は嬉しかった。今回の攻撃は大して難しくはないが、発想力にも繋がると感じた。攻撃者の目線として考えるなら、平文を使うプロトコル(http,ftp .etc)を使っているローカルネットワークを狙うのが最適であると感じた。

今日やること、実践パケット解析をまるまる読書会。+α パケット系CTFを解く会

そろそろセキュキャンも近づいてきたので焦りを感じ始めてきた僕。

実践パケット解析はWiresharkが基本。

僕はtcpdumpが基本。

両方使える方がいいよね?だから、両方使えるようになりたいです。はい。

実質3行のコード。

実質3行。

from optparse import OptParseError,OptionParser
from scapy.all import *

usage = "%usage:%prog [option]"
parse = OptionParser(usage,version="Version:0.1")

def checker(option,opt_str,value,parser):
    if os.path.isfile(value):
        parser.values._file = value
    else:
        print "The file doesn't exist"

parse.add_option(
        '-f','--file',
        action='callback',
        callback = checker,
        type = 'string',
        dest = '_file',
        metavar = 'FILE',
        help = '<Pakcet_File>.pcap \t\t\tMUST'
        )

(options,args) = parse.parse_args()


try:
    _file = rdpcap(options._file)
except TypeError:
    print "Try:python pkc_raw.py -help"
    exit()

for i,j in enumerate(_file):
    _str = j.sprintf("%Raw.load%")
    print "{0}:\t{1}".format(i,_str) if _str != "??" else "{0}:\tNone".format(i)

https://github.com/hogehogeworld/tpc/blob/master/EveryDay/pkc_raw.py

なんのコードかって?
自分で考えろ^^(ごめんなさいごめんなさい

IP抽出コード。

f:id:reonreon3reon:20130710175237p:plain

こんな感じで出来ます。
どこからパケットが飛んできてるかわかるのでいいと思いますよ。

ソースが見たきゃーくれてやる!

これ

from optparse import OptParseError,OptionParser

from scapy.all import *
#from sys import argv

usage = "usage:%prog [option]"
parse = OptionParser(usage,version='Vesion:2.4')

def checker(option,opt_str,value,parser):
    if os.path.isfile(value):
        parser.values.file = value
    else:
        print "The file doesn't exist"

parse.add_option(
        '-f','--file',
        action = 'callback',
        callback = checker,
        type = 'string',
        dest = 'file',
        metavar="FILE",
        help = '<PacketFile>.pcap \t\t\tMUST'
        )
(options,args) = parse.parse_args()
try:
    PACK = rdpcap(options.file)
except TypeError:
    print "Try:python same_ip.py -h"
    exit()


IP_ETHER_LIST ={}
IP_ETHER_LIST2 ={}
for i in PACK:
    IP_ETHER_LIST[i.sprintf("%IP.dst%")] = i.sprintf("%Ether.dst%")
    IP_ETHER_LIST2[i.sprintf("%IP.src%")] = i.sprintf("%Ether.src%")

print "SRC:"
for i in IP_ETHER_LIST2:
    if "??" in i:
        print "\t{0}\t\t\t:{1}".format(i,IP_ETHER_LIST2[i])
    else:
        print "\t{0}\t\t:{1}".format(i,IP_ETHER_LIST2[i])

print "DST:"
for j in IP_ETHER_LIST:
    if "??" in j:
        print "\t{0}\t\t\t:{1}".format(j,IP_ETHER_LIST[j])
    else:
        print "\t{0}\t\t:{1}".format(j,IP_ETHER_LIST[j])


この汚いコード読めたら褒めたるわ。

結構良いもん作ったと思う。

same_ip.py改良したった(Gitの使い方も覚えた

Git楽しい
✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌


先日 same_ip.pyを作ったので、だったら
http://docs.python.jp/2.6/library/optparse.html
でよりツールっぽくしてやろうと思った僕は、
書き直しました。

https://github.com/hogehogeworld/tpc/blob/master/EveryDay/same_ip.py

これ。すごすぎ。

f:id:reonreon3reon:20130614183050j:plain

まーたつまらないもの作っちゃったww

またつまらぬものを…作っちゃった。

from scapy.all import *

PACK = rdpcap(raw_input("Input the packet :"))
s = raw_input("Which IPaddr | Etheraddr(I|E):")

if s=="I":
    IPLIST = [i.sprintf("%IP.dst%") for i in PACK]
    IPLIST2 = [i.sprintf("%IP.src%") for i in PACK]
    IPLIST +=IPLIST2
else:
    IPLIST = [i.sprintf("%Ether.dst%") for i in PACK]
    IPLIST2 = [i.sprintf("%Ether.src%") for i in PACK]
    IPLIST +=IPLIST

#IPLIST = sorted(set(IPLIST),key=PACK.index)
NEW = []
for i in IPLIST:
    if i not in NEW: NEW.append(i)
    else: continue
for i in NEW: print i

パケットファイル開いてIPアドレスかEtherアドレスをまとめて出力する糞スクリプト。
何のためにあるかは、tcpdumpをフィルタしたい時に『どんな(IP|Ether)アドレスがあるんだ?』
ってときに役立つんじゃないかなーって思いまして。
いや、なかったからほしいって思った竹。

そろそろセキュキャンも近づいたので正念場やね。ラストスパート頑張ります!

ぼんぼる

f:id:reonreon3reon:20110613104352j:plain

課題

nmap △
wireshark △
tshark + editcap ×
etherape △
vmware player ○
teraterm/Poderosa ×
WinSCP ×
netcat ×
metasproit ×
hping2 ×

tshark+editcap はいらない希ガス
teraterm/PoderosaWinSCPもいらない希ガス
それ以外は極める。極み。

パケット脳に育てる。

前に 苫米地英人氏 が英語脳って言葉を作った。
その意味は『見た単語を英語のままで理解する』よは、頭で日本語に変えなてくも、見てぱっと分かる
ってことだと思います。てかそうです。

だから、今回ネットワークセキュリティで求められる
『パケット脳』というのは、『パケットを見て、すぐに解釈出来てしまう脳』ってことだと思います。てかそうだ。

具体的にどうするか…。

●参加者の方へ
正直、ネットワークセキュリティクラスは、英語脳ならぬ、パケット脳が出来上がっていないと、大変苦しい授業を受けることになります。
最低限、下記のことが出来ないと、120%楽しめません。
Wiresharkを手足のように使えること
・nmapのオプションによってどのような送出パターンが違うのか
・数GB以上のWiresharkで開けないパケットファイルから、自由に
 目的の通信を抜き出せること
snortシグネチャをかけること
IPv6の通信を理解していること
本大会までの。これらの理解のお手伝いが出来ればと思います。
ちなみに、上で書いていることが理解できないと相当やばいのであせったほうが良い。

とのことです。

ツイートは、

らしいです。
結構しんどい。

さぁ、これをキャンプまでにある程度マスターしてないとヤバい怖い死にたい。

Wiresharkを手足のように使えること
これについてですが、

実践 パケット解析 第2版 ―Wiresharkを使ったトラブルシューティング

実践 パケット解析 第2版 ―Wiresharkを使ったトラブルシューティング


これを読んで、ある程度パケットの練習していれば問題ないかと思います。
よは、日々の努力ですな。

・nmapのオプションによってどのような送出パターンが違うのか
うん。日本語の意味がわからない。『送出パターンが違うのか』ってどういうことか。
わかんねぇ。まぁー、オプションを指定して、送られるパケットの違いを見つければ良いのかと思います。はい。

・数GB以上のWiresharkで開けないパケットファイルから、自由に目的の通信を抜き出せること
そもそも 数GB以上のパケットファイルはWiresharkで開けないのか?
知らなかった。僕の軽率な考え方からしたら
 『 WiresharkGUIだから重いんだよ!www
   Scapy使えば行けるっしょ!?ww』
とか、ヤバすぎる。師匠ならどうするか聞いてみる。


snortシグネチャをかけること
これが僕にとって一番ヤバいかもしれない…
 全く把握してないww どうする僕!? めっちゃ調べるしか無いよな…うん。
 
              ぼんぼる!
f:id:reonreon3reon:20110613104352j:plain

おぉ、頑張れ俺。


IPv6の通信を理解していること
 これについてですが、

マスタリングIPsec 第2版

マスタリングIPsec 第2版

これを読みます。あと、実装も実践的に頑張りたいので
 ソースも書いて行こうと思います!!!