ISEC 2011 CTF Q9(lol.pcap) Writeup -追記あり


8/26〜8/27に行われた、ISEC 2011 CTFでのQ9(lol.pcap)のWriteupです。
解いている途中で時間切れになってしまったので、答えがあっているか確実ではありません。
 ただ、終了後のIRCの様子だとあっていると思うのですが・・



Q:9
Point:300

find key!
Download:lol.pcap


以下に途中で出たヒントも書いています。

続きを読む

FTPと改行コード

IIS-FTPにNcatで接続した時にはまったのでメモ。

  • IIS-FTPの改行コードはCRLF
  • NcatのデフォルトはLF
  • telnetはCRLF
  • vsFTPdやALFTP、3CDaemonなどはCRLFでもLFでも可
  • RFC959J


# ncat -v 10.0.0.100 21
Ncat: Version 5.50 ( http://nmap.org/ncat )
Ncat: Connected to 10.0.0.100:21.
220 Microsoft FTP Service
USER nao
451 The parameter is incorrect.


# telnet 10.0.0.100 21
Trying 10.0.0.100...
Connected to 10.0.0.100.
Escape character is '^]'.
220 Microsoft FTP Service
USER nao
331 Password required for nao.


# ncat -vC 10.0.0.100 21
Ncat: Version 5.50 ( http://nmap.org/ncat )
Ncat: Connected to 10.0.0.100:21.
220 Microsoft FTP Service
USER nao
331 Password required for nao.


# ncat --help
-C, --crlf Use CRLF for EOL sequence

FTPでのデータ転送について(vsFTPd)

前回のvsFTPd版です。


-環境-
Server:10.0.0.100/24 (Window7 IIS7.5-FTP7.5)
HostA :10.0.0.10/24
HostB :10.0.1.10/24

PORTコマンドに対する、デフォルトの設定でのvsFTPd 2.3.0の動作(HostA→Server)


PORT 10,0,0,10,0,80
500 Illegal PORT command.

PORT 10,0,0,10,3,255
500 Illegal PORT command.

PORT 10,0,0,10,4,0
200 PORT command successful. Consider using PASV.
NLST
150 Here comes the directory listing.
226 Directory send OK.

PORT 10,0,0,10,255,255
200 PORT command successful. Consider using PASV.
NLST
150 Here comes the directory listing.
226 Directory send OK.


PORT 10,0,1,10,0,80
500 Illegal PORT command.

PORT 10,0,1,10,3,255
500 Illegal PORT command.

PORT 10,0,1,10,4,0
500 Illegal PORT command.

PORT 10,0,1,10,255,255
500 Illegal PORT command.


IIS-FTPと同じ動作ですね。(レスポンスコードは違いますが・・)


Manpage of VSFTPD_CONF

このページを見ると、port_promiscuousをYESにするとPORTコマンドのセキュリティチェックを無効にできる、
とあるので、試しにvsftpd.confにport_promiscuous=YESを追加。

port_promiscuous=YES時のvsFTPdの動作


PORT 10,0,0,10,0,80
200 PORT command successful. Consider using PASV.
NLST
500 OOPS: Illegal port request
500 OOPS: priv_sock_get_cmd

PORT 10,0,0,10,3,255
200 PORT command successful. Consider using PASV.
NLST
500 OOPS: Illegal port request
500 OOPS: child died

PORT 10,0,0,10,4,0
200 PORT command successful. Consider using PASV.
NLST
500 OOPS: vsf_sysutil_bind
500 OOPS: child died

PORT 10,0,0,10,255,255
200 PORT command successful. Consider using PASV.
NLST
500 OOPS: vsf_sysutil_bind
500 OOPS: child died


PORT 10,0,1,10,0,80
200 PORT command successful. Consider using PASV.
NLST
500 OOPS: Illegal port request
500 OOPS: priv_sock_get_cmd

PORT 10,0,1,10,3,255
200 PORT command successful. Consider using PASV.
NLST
500 OOPS: Illegal port request
500 OOPS: child died

PORT 10,0,1,10,4,0
200 PORT command successful. Consider using PASV.
NLST
500 OOPS: vsf_sysutil_bind
500 OOPS: child died

PORT 10,0,1,10,255,255
200 PORT command successful. Consider using PASV.
NLST
500 OOPS: vsf_sysutil_bind
500 OOPS: child died


こんな風に上で弾かれていたPORTコマンドは通るのですが、
データ転送の時に
500 OOPS:
が返ってきてコネクションが切断されます。
色々と調べても解決できなかったので今回は断念・・


このPORTコマンドのように、FTPサーバの実装にあたっての諸注意ってあるのかなーと思ってたら、
RFC2577で触れられているんですね。

IPAの和訳もありました。
FTP Security Considerations

FTPでのデータ転送について(IIS-FTP,etc..)

前回のエントリのコメントIISFTPではレジストリでPORTコマンドを制御できると
教えて頂いたので、IISFTPを少しいじってみました。


-環境-
Server:10.0.0.100/24 (Window7 IIS7.5-FTP7.5)
HostA :10.0.0.10/24
HostB :10.0.1.10/24

PORTコマンドに対する、デフォルトの設定でのIIS-FTPの動作(HostA→Server)


PORT 10,0,0,10,0,80 //10.0.0.10:80
501 Server cannot accept argument.

PORT 10,0,0,10,3,255 //10.0.0.10:1023
501 Server cannot accept argument.

PORT 10,0,0,10,4,0 //10.0.0.10:1024
200 PORT command successful.

PORT 10,0,0,10,255,255 //10.0.0.10:65535
200 PORT command successful.


PORT 10,0,1,10,0,80 //10.0.1.10:80
501 Server cannot accept argument.

PORT 10,0,1,10,3,255 //10.0.1.10:1023
501 Server cannot accept argument.

PORT 10,0,1,10,4,0 //10.0.1.10:1024
501 Server cannot accept argument.

PORT 10,0,1,10,255,255 //10.0.1.10:65535
501 Server cannot accept argument.

どうやら
・転送先にウェルノウンポートを指定
・制御コネクションを張っているIPアドレスとは違うIPアドレスを指定
の場合、弾いているようです。


試しにこのページ(IIS を使用してサーバー間の FTP 転送を行う方法)のIIS6.0の
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSFTPSVC\Parameters\EnableDataConnTo3rdIP=1
を追加しても動作に変化はなく、IIS7.5-FTP7.5の設定を探しても見つからず・・(普通は必要なさそうですが)



ちなみに手元に環境があった、ALFTP(5.30.0.1)、3CDaemon(2.0 rev10) でも試してみましたが、
こっちは両方とも上記の8パターンが全部成功するので、PORTコマンドを制限してなさそう。
逆に制限する設定項目が見当たらず・・


vsftpdでも試してみます。
下記のサイトを見ると恐らく"port_promiscuous=[YES|NO] (Default:YES)"あたりっぽそうな感じ。

vsftpdの設定(vsftpd_conf)


参考
IIS の FTP (File Transfer Protocol) サービスに関する情報

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アドレスが異なっていても関係ないみたい。
色々と利用できそうですね。

Vyatta#01-簡易設定〜スタティックルートまで(Ciscoルータと比較)


ふと思い立って、CiscoルータとVyattaの設定方法を比較してみました。
Cisco・Vyattaともに検索すればコマンドの詳細はたくさん出てくるので、ここでは割愛します。
今回の目標はPCからServerへのpingまで。
下記ネットワークのR1を設定した場合です。


1.設定モードへの移行


[Cisco]
Router>enable //ユーザモード
Router#configure terminal //特権モード
Router(config)# //コンフィグモード

[Vyatta]
vyatta@vyatta:~$ configure  //operationモード
[edit]
vyatta@vyatta# //configurationモード

2.ホスト名の設定


[Cisco]
Router(config)#hostname R1

[Vyatta]
vyatta@vyatta# set system host-name VY1

3.IPアドレスの設定


[Cisco]
R1(config)#interface fastEthernet 0/0
R1(config-if)#ip address 192.168.0.1 255.255.255.0
R1(config-if)#no shutdown

[Vyatta]
vyatta@vyatta# set interfaces ethernet eth0 address 192.168.0.1/24

4.DHCPの設定


[Cisco]
R1(config)#ip dhcp excluded-address 192.168.0.1 192.168.0.10 //DHCPでの除外IPアドレス
R1(config)#ip dhcp pool LAN
R1(dhcp-config)#network 192.168.0.0 /24
R1(dhcp-config)#default-router 192.168.0.1
R1(dhcp-config)#dns-server 192.168.0.1
R1(dhcp-config)#domain-name cccisco.com
R1(dhcp-config)#exit

[Vyatta]
vyatta@vyatta# set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 start 192.168.0.11 stop 192.168.1.254 //DHCPでの割り当てIPアドレス

vyatta@vyatta# set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 default-router 192.168.0.1
vyatta@vyatta# set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 dns-server 192.168.0.1
vyatta@vyatta# set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 domain-name vvvyatta.com

5.スタティックルートの設定


[Cisco]
R1(config)#ip route 192.168.10.0 255.255.255.0 10.0.1.20

[Vyatta]
vyatta@vyatta# set protocols static route 192.168.10.0/24 next-hop 10.0.1.20

6.タイムゾーンの設定


[Cisco]
R1(config)#clock timezone JST 9

[Vyatta]
vyatta@vyatta# set system time-zone Asia/Tokyo

7.NTPサーバの指定


[Cisco]
R1(config)#ntp server ntp.nict.jp

[Vyatta]
vyatta@vyatta# set system ntp server ntp.nict.jp

8.DNSサーバの指定


[Cisco]
R1(config)#ip name-server 8.8.8.8
R1(config)#ip dns view default //3行追記
R1(cfg-dns-view)#dns forwarding
R1(cfg-dns-view)#dns forwarder x.x.x.x

[Vyatta]
vyatta@vyatta# set system name-server 8.8.8.8
vyatta@vyatta# set service dns forwarding listen-on eth0 //2行追記
vyatta@vyatta# set service dns forwarding system

9.現在の設定をシステムファイルに保存


[Cisco]
R1#copy running-config startup-config //*特権モードで

[Vyatta]
vyatta@vyatta# save

10.ルーティングテーブルの表示


[Cisco]
R1#show ip route //*特権モードで

[Vyatta]
vyatta@vyatta# show ip route


大きく異なる部分はVyattaはcommitコマンドを入力しないと設定が反映されない点。
また、設定を削除する場合はCiscoだと頭に「no」をつけ、Vyattaだと「set」ではなく「delete」を使う。


[Cisco]
R1(config)#no ip name-server 8.8.8.8

[Vyatta]
vyatta@vyatta# delete system name-server 8.8.8.8
vyatta@vyatta# commit


見た感じ結構違いがありますが、Cisco PIX/ASAを触ることも多いせいか、ほとんど違和感がないです。
ただ、Vyattaはコマンドの省略ができないのが歯がゆい。(例えばCiscoでは「#interface fastEthernet 0/0」を「#int f0/0」に省略可。)
もっといじりたおしてみます。

追記(2011/03/27 16:00)

DNSフォワーディングの設定が抜けていました。
この環境にはDNSサーバがないので、あまり関係ないですが・・

TweetDeckでux.nuを使う


ざっと検索しても見つからなかったのでメモ。


Settings>Services


「Select the service you wish to use to shorten URLs」を「Other
「Other URL Shortening Endpoint」を「http://ux.nu/api/short?format=plain&url=%@


参考
安全なURL短縮/展開サービス「ux_nu」の正しい使い方 Kraftwerk