NcatでFTP(アクティブモード)


4月8日のtwitterセキュリティクラスタを見ていて面白そうだったのでやってみました。


-環境-
Server:10.0.0.100/24
HostA :10.0.0.10/24
HostB :10.0.1.10/24


今回はNcatを使用。
普通にやるのは面白くないので、Server/HostA間で制御コネクションを張り、
三者のHostBにデータを転送できるか試してみました。


1.(HostB)データ受信用に80番でリッスン


D:\HostB>ncat -vl 80
Ncat: Version 5.50 ( http://nmap.org/ncat )
Ncat: Listening on 0.0.0.0:80

2.(HostA)FTPにログイン


root@Xubuntu:/HostA# ncat -v 10.0.0.100 21
Ncat: Version 5.50 ( http://nmap.org/ncat )
Ncat: Connected to 10.0.0.100:21.
220 3Com 3CDaemon FTP Server Version 2.0
USER test
331 User name ok, need password
PASS test
230 User logged in

3.(HostA)Serverのファイル一覧を取得(ls)


PORT 10,0,1,10,0,80 //HostBの80番を指定
200 PORT command successful.
NLST
150 File status OK ; about to open data connection
226 Closing data connection

4.(HostB)lsの結果


D:\HostB>ncat -vl 80
Ncat: Version 5.50 ( http://nmap.org/ncat )
Ncat: Listening on 0.0.0.0:80
Ncat: Connection from 10.0.0.100:20.
.
..
IPSec.pcap
Sub7.pcap

D:\HostB>

5.(HostB)もう一度リッスン


D:\HostB>ncat -vl 80 > Sub7.pcap
Ncat: Version 5.50 ( http://nmap.org/ncat )
Ncat: Listening on 0.0.0.0:80

6.(HostA)ServerからSub7.pcapをダウンロード(get)


TYPE I
200 Type set to I.
PORT 10,0,1,10,0,80
200 PORT command successful.
RETR Sub7.pcap
150 File status OK ; about to open data connection
226 Closing data connection; File transfer successful.

7.(HostB)getの結果


D:\HostB>ncat -vl 80 > Sub7.pcap
Ncat: Version 5.50 ( http://nmap.org/ncat )
Ncat: Listening on 0.0.0.0:80
Ncat: Connection from 10.0.0.100:20.

D:\HostB>ls -sh
total 616K
616K Sub7.pcap

8.(HostA)ログアウト


QUIT
221 Service closing control connection
Ncat: 96 bytes sent, 404 bytes received in 115.46 seconds.
root@Xubuntu:/HostA#


FTPでは制御コネクションを張っているIPアドレスと、
PORTコマンドで指定するIPアドレスが異なっていても関係ないみたい。
色々と利用できそうですね。