TCP/IPソケットプログラミングC言語篇がひと通り終わったよ~

とりあえず目標は達成しました。

明解C言語の入門~中級、ポインタ完全制覇と読み進めてきてのやっとこさですけど、単語と文法の辞書を片手にやっと簡単な会話ができるようになったかなぁという感じです。
ぺらぺーらにはまだまだ時間かかるだろうね。

いまちょこっとPerlも初めてるんだけど、Perlでは主にファイルの操作、ログの解析、正規表現、ハッシュっていうラインナップなので今までやってきたものとは一味違っと~る。

たとえば、Iplay baseballが分かったらJe joue au baseball.はすぐにわかるよね。
過去にC言語でやった練習台をPerlでやってみたらさくっとできるんよね。
ただ、やろうとしていることがなかなかできないので多少へこみぎみ。

 

まあ近況はそんな感じです。

ひとまず・・・
まとめってものでもないけど、ちょこっと試してみたことがあるのでそれを書きます。

UDPでIP Spoofing やってみた。

さらっと書いてますけど、いわゆる偽装です。

チェックはconntrack-toolsだけで今回はTCPdumpは使ってません。
前回ではっきりと気づいてなくて今回では気づいたんだけど、conntrack-toolsではアプリケーション層しか分からないので、iptablesでポートをふさいでると検知しないのだね。

ってことでUDPは全開です。

[NEW] udp      17 30 src=192.168.24.162 dst=192.168.24.69 sport=10000 c=192.168.24.69 dst=192.168.24.162 sport=10000 dport=10000
[NEW] udp      17 30 src=192.168.24.163 dst=192.168.24.69 sport=10000 c=192.168.24.69 dst=192.168.24.163 sport=10000 dport=10000
[NEW] udp      17 30 src=192.168.24.164 dst=192.168.24.69 sport=10000 c=192.168.24.69 dst=192.168.24.164 sport=10000 dport=10000
[NEW] udp      17 30 src=192.168.24.165 dst=192.168.24.69 sport=10000 c=192.168.24.69 dst=192.168.24.165 sport=10000 dport=10000
[NEW] udp      17 30 src=192.168.24.166 dst=192.168.24.69 sport=10000 c=192.168.24.69 dst=192.168.24.166 sport=10000 dport=10000
[NEW] udp      17 30 src=192.168.24.167 dst=192.168.24.69 sport=10000 c=192.168.24.69 dst=192.168.24.167 sport=10000 dport=10000
[NEW] udp      17 30 src=192.168.24.168 dst=192.168.24.69 sport=10000 c=192.168.24.69 dst=192.168.24.168 sport=10000 dport=10000
[NEW] udp      17 30 src=192.168.24.169 dst=192.168.24.69 sport=10000 c=192.168.24.69 dst=192.168.24.169 sport=10000 dport=10000
[NEW] udp      17 30 src=192.168.24.170 dst=192.168.24.69 sport=10000 c=192.168.24.69 dst=192.168.24.170 sport=10000 dport=10000
[NEW] udp      17 30 src=192.168.24.171 dst=192.168.24.69 sport=10000 c=192.168.24.69 dst=192.168.24.171 sport=10000 dport=10000
[NEW] udp      17 30 src=192.168.24.172 dst=192.168.24.69 sport=10000 c=192.168.24.69 dst=192.168.24.172 sport=10000 dport=10000

一部しか載ってませんが、ヘッダーデータを作成して単純にデータを送るだけのクライアントツールで、ループでセグメント内のIPを2~254まで回してます。

これを防ごうと思ったら、さっきも書いたけどiptablesでOK。提供してるサービスについては別の手を使わないといけないってことだね。

では次の実験では、グローバルIPを持ったサーバーにこのプログラムを送ってみた。
結果は普通にISPから振り分けられているグローバルIPが表示される。
CTUでNAT変換されてるんだろう。
おもしろくないな。

 

では次の実験では、グローバルIPを持ったサーバーとクライアントを使ってみた。
結果としては、送信元IPをちゃんと設定したときだけサーバー側に結果が表示された。
という事は、もっと下のレイヤーでチェックされてるという事かな。

どうやってるかは分からないけど、結論を言うと偽装は難しいようだ。
だけど、残念ながらこれは一般人に限った話で、こないだニュースにもなってたけど、ウィルス対策ソフトは終焉を迎えて、防げないから被害拡大を防ごうぜ!ってものになるとかなんとか。
もう次元の違うプログラマーならなんでもできちゃうんだろうか。
その世界はもともとイタチごっこだったと思うけど、もう追いつかなくなってしまったんだろうか。

 

まぁ、できる人たちのことは置いておいて自分のことが大事なのだよ。
いま以上踏み込もうと思うと、ネットワークの知識ももっと必要だし、プログラミングの方はヘッダーをいじったり、構造体(ソケットは構造体が多い)を使っていろいろいじくるものになるっぽい。これまた今までやってきたプログラムとはひとあじ違った感じのものだ。
いあ、ひとあじ違ったというかこのまま突き進んだ感じかしら。

 

次の予定は、買ったけどやってないCとC++の本があるので、もう1回基本からの予定だ。

なんか久しぶりにまじめな文だな(笑)

Similar Posts:


2 thoughts on “TCP/IPソケットプログラミングC言語篇がひと通り終わったよ~

  1. かぼちゃ

    私も仮想ネットワークでSpoofingして遊んだときもルータを通すのに苦労しました(´・ω・`)
    (マスカレイドを通ったかどうかは忘れました.
    かと言ってグローバルIPを詐称したパケットをwwwに流したら(流せたら),面倒なことになりますよね….

    Reply
    1. たけけん Post author

      無数にある脆弱なサーバーを踏み台にした方が効率がいいし、危険をおかして?プログラミングで偽装して流すことをするかどうかは分からないですが、そうなったら、DDoSの送信元IPが正しいかそうでないかなんてどうにもできなそ・・・。

      まぁ。自分もクラッキングに興味があるわけではないんで、もっとスキルをつんでかぼちゃさん並に遊べるようになりたいですわ(´・ω・`)

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *