読者です 読者をやめる 読者になる 読者になる

1日ひとつだけ強くなる

おべんきょうのーと

Raspbery piにcowrieを入れる際にハマったこと

はじめに

ラズベリーパイハニーポットであるCowrieを導入する際にハマったメモ。

深夜に勢いで書いてるのでとても読みにくい文章ですまない。

ハニーポット

ジャンクさんの記事を参考にしてください。

junk-coken.hatenablog.com

junk-coken.hatenablog.com

kippoよりcowrieの方がオススメなのにはこんな理由もあるっぽい

atani.github.io

Cowrieのセットアップ

以下のリンクを参考にしました。というか、README.mdを参考にした。

cowrie.cgfはhostnameとsensor_nameだけ変更した。

shinayoshi's note

途中、start.shを実行するとImportError: No module named configparserとか言われたので、

$ sudo apt-get python-configparser

後からのエラー対処でもそうなのだが、pipからインストールしても認識されてない???pathは通してたはずなんだけど。これは未確認だが、最終的にすべてaptからインストールできてちゃんと動作した。

後から調べたら

ecoha0630.hatenablog.com

このブログでtwistedのバージョンについて書いてあった。15.3でエラーを吐いて15.2にしているので、新しくなったmoduleにまだ追いついてないのだろうか。僕の環境では確かめていなかった。後で調べたので使用したmoduleのバージョンを記事の最後に載せておく。

とりあえずは、cowrieが起動できた。

Password入力してから動かない

cowrieのセットアップ終わって、起動できたし接続してみるぞ!と手元のmacsshして繋いでみた。

まず、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