dionaeaのサービスを見てみる
とりあえず、公式のこのページを参考に1つずつ見ていけたらなぁと思ってます。
Service — dionaea 0.8.0 documentation
その前に
外部からnmapをした時に、dionaeaとバレてしまう可能性があるのでそれを修正します。参考サイトはこちらです。
# nmap ipアドレス -sV Host is up (0.039s latency). Not shown: 986 closed ports PORT STATE SERVICE VERSION 21/tcp open ftp Synology DiskStation NAS ftpd 22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.10 (Ubuntu Linux; protocol 2.0) 23/tcp open telnet? 42/tcp open tcpwrapped 53/tcp open domain? 80/tcp open http nginx 135/tcp open msrpc? 443/tcp open ssl/http nginx 445/tcp open microsoft-ds Dionaea honeypot smbd 1433/tcp open ms-sql-s Dionaea honeypot MS-SQL server 1723/tcp open pptp (Firmware: 1) 3306/tcp open mysql MySQL 5.7.16 5060/tcp open sip? 5061/tcp open ssl/sip-tls? Service Info: Host: ; OS: Linux; Device: storage-misc; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 160.80 seconds
smbとmssqlの部分でDionaeaと表示されてしまっているので、この二つが修正対象。このサイトにnmapが検出に使用するシグネチャがある。詳しくは参考サイトで解説してくれているので省きますが、grepコマンドで'dionaea'を検索すれば、どのプロトコルがどのシグネチャで検出しているかわかります。
smb
"SMB Negotiate Protocol Response"に含まれる"OemDomainName"と"ServerName"の値をチェックしているとのこと。
/opt/dionaea/lib/dionaea/python/dionaea/smb/include/smbfields.pyの755行目と759行目を変更する。ここは環境やバージョンによって変わるかもしれないので、自分で検索かけて見てください。
と思ったのですが、ここ以外に依存している部分があるっぽいです。/opt/dionaea/lib/dionaea/python/dionaea/smb/extras.pyの20行目あたりがそれに該当します。
データベースに接続する際のpre-login TDS package (Tabular Data Streams)の情報をチェックしている。Token Typeの値が0x00になっているので,これを0x01に変更する./opt/dionaea/lib/dionaea/python/dionaea/mssql/mssql.pyの147行目にある。これもバージョンによって違うかもしれない。
これ以外は一応dionaeaの名前は表示されていなかったので、okとします。では一度再起動かけて再びnmapでポートスキャンを行って見ましょう。
一応dionaeaの名前は消えたのでハニーポットとはバレなくなりましたが、下にメッセージが出るようになりました。どうやら手元にない情報の帰り方をすると、情報提供してね、って通知されているようです。ハニーポットってバレなくはなったのでとりあえずよしとします。
では色々とサービスを見て見ます。
ftp
File Transfer Protocol.
特定のコンピュータ間でファイル転送する時に使用するアプリケーション層のプロトコルです。Telnet/SSHと同様、相手先コンピュータにログインした上でファイル転送を行います。FTPを利用すればファイルをFTPサーバにアップロードしたり、FTPサーバからダウンロードしたりできます。FTPでは、ログインする際にやりとりするユーザ名とパスワード情報は、暗号化されずにそのまま送信されるのでセキュアなFTP通信を行いたい場合、FTPS(FTP over SSL/TLS)や、SFTP(SSH FTP)を使用します。
https://www.infraexpert.com/study/tcpip20.html
ftpはtcpで通信するので、udpのポートは開けてません。ウェルカムメッセージは接続時に表示されるものなので、適当に編集しても大丈夫そう。編集後自宅ネットワークからftpで繋いでみると、今設定したメッセージが初めに届いてることが確認できるかと思います。けど実際に動かそうとしたらget,putあたりで接続切れてしまいました。そこまで実装されていない感じでしょうか?/opt/dionaea/etc/dionaea/services-enabled/ftp.yamlのrootで指定したフォルダがftpに接続した時に初めに到達する場所になってます。なので本来はここ以下にftpでやり取りした結果が保存されていくのでしょう。
telnet
telnetは外部のコンピュータにアクセスするコマンド。パソコンやネットワークが今ほど発達していない時代は、メインコンピュータという1台の大型コンピュータに端末という形で複数のユーザーが接続し、利用していた。
https://eng-entrance.com/linux-command-telnet
http
これは特に調べる必要はないかと。80ポートはtcp,udp共にhttpで予約されているとのことですが、あくまでtcpを使用せよとの規定になっているので、tcpのみを開けておけばokです。/opt/dionaea/var/dionaea/roots/www/にindex.html等のページを設置しておけば、ブラウザからアクセス可能になります。http.yamlのrootでそのフォルダを設定しているのでそこを見てください。後の設定はちょっとまだわからないです。ごめんなさい。
mssql
Microsoft SQL Serverで1433ポートで待っている。phpとかでlinuxからサーバへアクセスができるっぽいです。
pptp
PPTP (Point-to-Point Tunneling Protocol) は、TCP/IP ベースのデータ ネットワーク上に仮想プライベート ネットワーク (VPN:Virtual Private Network) を作り出すことにより、リモート ユーザーから企業のサーバーへの安全なデータ転送を可能にするためのネットワーク プロトコルです。PPTP は、インターネットのような公共のネットワークを経由して、オンデマンドで接続可能で、マルチプロトコルがサポートされる仮想的なプライベート ネットワークを構築可能にします。
https://technet.microsoft.com/ja-jp/library/Gg983536.aspx
ポートは1723でした。
mysql
省略。
sip
Session Initiation Protocol. TCP/IPネットワーク上の複数の地点間で固定的な通信路(セッション)の確立や切断などを行うためのプロトコル(通信規約)の一つ。主に音声通話のような双方向のリアルタイム通信を行うために用いられる。
SIP(Session Initiation Protocol)とは - IT用語辞典
まとめ
内容がなんか薄い気がしますが、無知なゆえ致し方なし。ログの取り方とか、サービスの待ち受け方とか自分でカスタマイズしていかなければいけないのかなと、調べてるうちに感じてきました。多分できますよね。頑張ります。