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