Raspbery piにcowrieを入れる際にハマったこと
はじめに
ラズベリーパイにハニーポットであるCowrieを導入する際にハマったメモ。
深夜に勢いで書いてるのでとても読みにくい文章ですまない。
ハニーポット
ジャンクさんの記事を参考にしてください。
kippoよりcowrieの方がオススメなのにはこんな理由もあるっぽい
Cowrieのセットアップ
以下のリンクを参考にしました。というか、README.mdを参考にした。
cowrie.cgf
はhostnameとsensor_nameだけ変更した。
途中、start.sh
を実行するとImportError: No module named configparser
とか言われたので、
$ sudo apt-get python-configparser
後からのエラー対処でもそうなのだが、pipからインストールしても認識されてない???pathは通してたはずなんだけど。これは未確認だが、最終的にすべてaptからインストールできてちゃんと動作した。
後から調べたら
このブログでtwistedのバージョンについて書いてあった。15.3でエラーを吐いて15.2にしているので、新しくなったmoduleにまだ追いついてないのだろうか。僕の環境では確かめていなかった。後で調べたので使用したmoduleのバージョンを記事の最後に載せておく。
とりあえずは、cowrieが起動できた。
Password入力してから動かない
cowrieのセットアップ終わって、起動できたし接続してみるぞ!と手元のmacでsshして繋いでみた。
まず、Password入力のプロンプト出るまでに何秒かかるんだ….って感じで、Password入力後は反応がなく、フリーズしてしまった。
そこで、ssh接続のログを確認してみようと思い、/home/cowrie/cowrie/log/cowrie.log
を見てみた。
以下問題のlog
2016-12-13 03:31:07+0900 [cowrie.ssh.factory.CowrieSSHFactory] New connection: 192.168.0.10:63868 (192.168.0.202:2222) [session: 6c03cb63] 2016-12-13 03:31:07+0900 [HoneyPotSSHTransport,1,192.168.0.10] Remote SSH version: SSH-2.0-OpenSSH_6.9 2016-12-13 03:31:07+0900 [HoneyPotSSHTransport,1,192.168.0.10] kex alg, key alg: diffie-hellman-group-exchange-sha1 ssh-rsa 2016-12-13 03:31:07+0900 [HoneyPotSSHTransport,1,192.168.0.10] outgoing: aes128-ctr hmac-sha1 none 2016-12-13 03:31:07+0900 [HoneyPotSSHTransport,1,192.168.0.10] incoming: aes128-ctr hmac-sha1 none 2016-12-13 03:32:21+0900 [HoneyPotSSHTransport,1,192.168.0.10] NEW KEYS 2016-12-13 03:32:21+0900 [HoneyPotSSHTransport,1,192.168.0.10] starting service ssh-userauth 2016-12-13 03:32:21+0900 [SSHService ssh-userauth on HoneyPotSSHTransport,1,192.168.0.10] root trying auth none 2016-12-13 03:32:21+0900 [SSHService ssh-userauth on HoneyPotSSHTransport,1,192.168.0.10] root trying auth publickey 2016-12-13 03:32:21+0900 [SSHService ssh-userauth on HoneyPotSSHTransport,1,192.168.0.10] public key attempt for user root with fingerprint 1b:5a: fc:b3:3c:a7:46:3c:99:01:10:0a:fb:19:6e:ef 2016-12-13 03:32:21+0900 [SSHService ssh-userauth on HoneyPotSSHTransport,1,192.168.0.10] root failed auth publickey 2016-12-13 03:32:21+0900 [SSHService ssh-userauth on HoneyPotSSHTransport,1,192.168.0.10] reason: ('Incorrect signature', None) 2016-12-13 03:32:21+0900 [SSHService ssh-userauth on HoneyPotSSHTransport,1,192.168.0.10] root trying auth keyboard-interactive 2016-12-13 03:32:25+0900 [SSHService ssh-userauth on HoneyPotSSHTransport,1,192.168.0.10] login attempt [root/admin] succeeded 2016-12-13 03:32:29+0900 [SSHService ssh-userauth on HoneyPotSSHTransport,1,192.168.0.10] root authenticated with keyboard-interactive 2016-12-13 03:32:29+0900 [SSHService ssh-userauth on HoneyPotSSHTransport,1,192.168.0.10] starting service ssh-connection 2016-12-13 03:32:29+0900 [SSHService ssh-connection on HoneyPotSSHTransport,1,192.168.0.10] got channel session request 2016-12-13 03:32:29+0900 [SSHChannel session (0) on SSHService ssh-connection on HoneyPotSSHTransport,1,192.168.0.10] channel open 2016-12-13 03:32:29+0900 [SSHService ssh-connection on HoneyPotSSHTransport,1,192.168.0.10] got global no-more-sessions@openssh.com request 2016-12-13 03:32:29+0900 [SSHChannel session (0) on SSHService ssh-connection on HoneyPotSSHTransport,1,192.168.0.10] pty request: xterm-256color (24, 80, 480, 312) 2016-12-13 03:32:29+0900 [SSHChannel session (0) on SSHService ssh-connection on HoneyPotSSHTransport,1,192.168.0.10] Terminal Size: 24 80 2016-12-13 03:32:29+0900 [SSHChannel session (0) on SSHService ssh-connection on HoneyPotSSHTransport,1,192.168.0.10] request_env: LANG=ja_JP.UTF-8 2016-12-13 03:32:29+0900 [SSHChannel session (0) on SSHService ssh-connection on HoneyPotSSHTransport,1,192.168.0.10] getting shell 2016-12-13 03:32:29+0900 [SSHChannel session (0) on SSHService ssh-connection on HoneyPotSSHTransport,1,192.168.0.10] Opening TTY Log: log/tty/20161213-033229-6c03cb63-0i.log 2016-12-13 03:32:30+0900 [SSHChannel session (0) on SSHService ssh-connection on HoneyPotSSHTransport,1,192.168.0.10] Unhandled Error Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 73, in callWithContext return context.call({ILogContext: newCtx}, func, *args, **kw) File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext return self.currentContext().callWithContext(ctx, func, *args, **kw) File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext return func(*args,**kw) File "/usr/lib/python2.7/dist-packages/twisted/conch/ssh/channel.py", line 137, in requestReceived return f(data) --- <exception caught here> --- File "/usr/lib/python2.7/dist-packages/twisted/conch/ssh/session.py", line 53, in request_shell self.session.openShell(pp) File "/home/cowrie/cowrie/cowrie/ssh/session.py", line 125, in openShell self.protocol.makeConnection(processprotocol) File "/usr/lib/python2.7/dist-packages/twisted/internet/protocol.py", line 481, in makeConnection self.connectionMade() File "/home/cowrie/cowrie/cowrie/insults/insults.py", line 77, in connectionMade insults.ServerProtocol.connectionMade(self) File "/usr/lib/python2.7/dist-packages/twisted/conch/insults/insults.py", line 414, in connectionMade self.terminalProtocol = self.protocolFactory(*self.protocolArgs, **self.protocolKwArgs) File "/home/cowrie/cowrie/cowrie/core/protocol.py", line 236, in __init__ HoneyPotBaseProtocol.__init__(self, avatar) File "/home/cowrie/cowrie/cowrie/core/protocol.py", line 51, in __init__ globals(), locals(), ['commands']) File "/home/cowrie/cowrie/cowrie/commands/tftp.py", line 5, in <module> import tftpy exceptions.ImportError: No module named tftpy 2016-12-13 03:36:48+0900 [HoneyPotSSHTransport,1,192.168.0.10] Got remote error, code 11 reason: disconnected by user 2016-12-13 03:36:48+0900 [SSHChannel session (0) on SSHService ssh-connection on HoneyPotSSHTransport,1,192.168.0.10] Closing TTY Log: log/tty/20161213-033229-6c03cb63-0i.log after 258 seconds 2016-12-13 03:36:48+0900 [HoneyPotSSHTransport,1,192.168.0.10] avatar root logging out 2016-12-13 03:36:48+0900 [HoneyPotSSHTransport,1,192.168.0.10] connection lost 2016-12-13 03:36:48+0900 [HoneyPotSSHTransport,1,192.168.0.10] Connection lost after 341 seconds
またexceptions.ImportError: No module named tftpy
って出てたので、
$ sudo apt-get install python-tftpy
これでちゃんとログインできた。
ポートフォワーディング
後はポートフォワードするだけだが、iptablesはよくわかってないのでufwでやることにする。 今日はもう寝る。
追記
twistedのバージョンは14.0.2が入ってるっぽい。
>>> import pkg_resources >>> for dist in pkg_resources.working_set: ... print(dist.project_name, dist.version) ... ('wsgiref', '0.1.2') ('argparse', '1.2.1') ('Python', '2.7') ('Twisted-News', '14.0.2') ('gmpy', '1.15') ('Twisted-Names', '14.0.2') ('gmpy2', '2.0.3') ('python-apt', '0.9.3.12') ('Twisted-Runner', '14.0.2') ('Twisted-Core', '14.0.2') ('MySQL-python', '1.2.3') ('zope.interface', '4.1.1') ('tftpy', '0.6.0') ('configparser', '3.3.0r2') ('RPi.GPIO', '0.6.3') ('Twisted', '14.0.2') ('characteristic', '0.1.0') ('PAM', '0.4.2') ('pycrypto', '2.6.1') ('pyasn1', '0.1.7') ('Twisted-Conch', '14.0.2') ('Twisted-Web', '14.0.2') ('numpy', '1.8.2') ('service-identity', '1.0.0') ('Twisted-Words', '14.0.2') ('Twisted-Lore', '14.0.2') ('pyOpenSSL', '0.13.1') ('pyasn1-modules', '0.0.5') ('Twisted-Mail', '14.0.2') ('pyserial', '2.6') >>>
バカ
調べてる時に見つけたこのリンク Authentication takes long time · Issue #81 · micheloosterhof/cowrie · GitHub
から、ラズパイ使ってる人がこのパッケージ入れるとイイ感じに動いてるよ!みたいなのを見つけて、頭が働いてなかったので
$ sudo apt-get install python-gmp*
これを実行した。
最終的にこんなになった
0 upgraded, 96 newly installed, 0 to remove and 0 not upgraded. Need to get 56.3 MB of archives. After this operation, 212 MB of additional disk space will be used. Do you want to continue? [Y/n]
python-numpyとかも入ってたから、多分全部のパッケージインストールしたんでは。アホか。
でも実際に入れてみると早くなっていたので、必要なパッケージだけ残してあとは捨てよう…..
やること
- MySQL(mariaDB)と接続させてログを管理、可視化していきたい(kippo-graphとか気になる)
- ポートフォワードの設定(明日やれ)
- pastebinとかにアップするとアクセス増えるらしいので、新年はマルウェア採集したい
クリスマスプレゼントはサンタさんにマルウェアをよろしく頼む。
参考
github.com shinayoshi's note cowrie won't start, No module named configparser · Issue #272 · micheloosterhof/cowrie · GitHub Authentication takes long time · Issue #306 · micheloosterhof/cowrie · GitHub Authentication takes long time · Issue #81 · micheloosterhof/cowrie · GitHub exceptions.ImportError: No module named tftpy · Issue #343 · micheloosterhof/cowrie · GitHub