現場(環境): Ubuntu 16.04 套件:Cowrie
處理方式:
安裝階段都透過root權限執行。
*除了啟動cowrie套件用一般帳號開啟外,
其他安裝檔案都使用root權限去進行
apt-get install python-dev
(不安裝這個,後面在pip install twisted時會發生錯誤)
安裝相關套件
#apt-get install python-dev gmpc-dev build-essential libmpfr-dev \
libmpc-dev libffi-dev libssl-dev python-twisted python-crypto \
python-pyasn1 python-gmpy2 python-mysqldb python-zope.interface git
*zope.interface -> twisted 安裝順序注意。
安裝python的virtualenve,把cowrie包抓下來丟進去。
#apt-get install virtualenv
#cd /opt
git clone http://github.com/micheloosterhof/cowrie
注意:需要再python 2.7的版本底下。
如果不是python 2.7 的版本狀況下,就要用模擬2.7版本的環境。
#virtualenv -p python2.7 cowrie-env
不然單純用下方就好了
#cd cowrie
/opt/cowrie# virtualenv cowrie-env
(這邊建立環境千萬注意,當初我打成cowire-env,結果後面cowrie啟動時找不到cowrie-env環境,
一直跳錯誤訊息:The specified virtualenv "cowrie-env" was not found! )
使用這個模擬出來的環境。
#source cowire-env/bin/activate
#pip install twisted cryptography pyopenssl gmpy2
錯誤表示要再加裝相依性套件。
apt-get install -y python-cffi libffi-dev libssl-dev
apt-get install -y libgmp-dev libmpfr-dev libmpc-dev
x86_64-linux-gnu-gcc 錯誤訊息
#apt-get install gcc
緊接著處理
#chown -R quentin:quentin cowrie
# cp cowrie.cfg.dist cowrie.cfg
在2015年版本是用statr.sh,現在是cowrie
(cowire-env) root@web:/home/quentin/cowrie# vim bin/cowrie
到裏面把0077改成0022
因為我們要讓蜜罐上線,所以我們要把他的PORT改成22
不過在那之前我們也得先把我們的SSH Port做個修改。
(建議在60000以上,可以防止被nmap掃到)
#vim /etc/ssh/sshd_config
修改蜜罐的Port
(cowire-env) root@web:/home/quentin/cowrie# vim cowrie.cfg
listen解開註解,改成自己會用的Port(建議在TCP-60000以上)
endpoints也要配合listen做修改。
我會順便改hostname的名稱。
接著用iptables進行導port的作業
#iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 62222
#iptables save
都修改完之後,給予權限的修改;讓使用者可以啟動裏面的服務
#chown quentin:quentin -R /opt/cowrie
之後切換到一般使用者權限,進入虛擬環境
能執行cowire檔案就算啟用了。
#su - quentin
#cd /opt/cowrie
# quentin@web:/opt/cowrie#. cowrie-env/bin/activate
(cowrie-env) quentin@web:/opt/cowrie#. bin/cowrie start
Activating virtualenv "cowrie-env"
Starting cowrie: [twistd --umask 0022 --pidfile var/run/cowrie.pid -l log/cowrie.log cowrie ]...
上面提到的名稱取錯,或者沒有把cowrie-env環境建在cowrie內的話:
(cowrie-env) quentin@web:/opt/cowrie# ./bin/cowrie start
The specified virtualenv "cowrie-env" was not found!
關閉服務只要將start改成stop就好了。
(cowrie-env) quentin@web:/opt/cowrie#. bin/cowrie stop
Stopping cowrie…
離開virtualenve環境要用deactivate指令
(cowrie-env) quentin@web:/opt/cowrie# deactivate
#quentin@web:/opt/cowrie#
這邊簡單看一下Cowrie裏面的設定值。
(1) cowrie/data/userdb.txt (連接蜜罐的帳密)
可以設稍微複雜一點,但不要複雜到難以破解,
因為密罐的重點還是要讓人入侵進來檢測。
依他內文的格式進行帳密的新增修改就好。
#~######
root:x:!root
root:x:!123456
root:x:*
richard:x:*
richard:x:fout
#!#######
(2) cowrie/log/cowrie.json
被入侵後的相關日誌
(3) cowrie/log/cowrie.log
被入侵後的相關日誌
(4) cowrie/txtcmds/bin & cowrie/txtcmds/bin
這邊都是假的指令集
(5) cowrie/dl
駭客入侵後抓的檔案都會放在這裡。
(6) cowrie/honeyfs/etc/motd
設定登入訊息,這邊要弄的越像真的越好。
但是這邊跟kippo一樣,用文字看太麻煩,
我們透過資料庫方面來整理我們的資料。
安裝Mysql資料庫;回到root帳號權限進行安裝。
#apt-get install libmysqlclient-dev python-dev
安裝資料庫的時候,會要求你輸入root的密碼。
#apt-get install mysql-server python-mysqldb
#(cowrie-env) root@web:/opt/cowrie# pip install mysql-python
Collecting mysql-python
Downloading MySQL-python-1.2.5.zip (108kB)
100% |████████████████████████████████| 112kB 640kB/s
Building wheels for collected packages: mysql-python
Running setup.py bdist_wheel for mysql-python ... done
Stored in directory: /root/.cache/pip/wheels/38/a3/89/ec87e092cfb38450fc91a62562055231deb0049a029054dc62
Successfully built mysql-python
Installing collected packages: mysql-python
Successfully installed mysql-python-1.2.5
連入資料庫建立相關資訊
(cowrie-env) root@web:/opt/cowrie# mysql -u root -p
Enter password:
mysql> create database cowrie;
mysql> grant all on cowrie.* to cowrie@localhost identified by '你的密碼';
mysql> flush privileges;
將cowrie 設計的資料庫格式匯入
(cowrie-env) root@web:/opt/cowrie# cd /opt/cowrie/doc/sql/
(cowrie-env) root@web:/opt/cowrie/doc/sql#mysql -u root -p
Enter password:
mysql> use cowrie;
Database changed
mysql> source ./mysql.sql;
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.02 sec)
再看一下,我們就可以看到schema已經進來了。
mysql> show tables;
+------------------+
| Tables_in_cowrie |
+------------------+
| auth |
| clients |
| downloads |
| input |
| keyfingerprints |
| sensors |
| sessions |
| ttylog |
+------------------+
8 rows in set (0.00 sec)
回到設定檔(cowrie.cfg)進行資料庫部份的設定。
(cowrie-env) root@web:/opt/cowrie# vim cowrie.cfg
到這邊資料庫設定就完成了。
啟動cowrie服務測試。(一般使用者權限執行)
(cowrie-env) quentin@web:/opt/cowrie$ ./bin/cowrie start
Activating virtualenv "cowrie-env"
Starting cowrie: [twistd --umask 0022 --pidfile var/run/cowrie.pid -l log/cowrie.log cowrie ]...
在用其他主機連線測試(這邊是用不轉port的方法測試)。
之後再資料庫當中檢測一些資料表
sessions、auth、input
用途跟方法全跟kippo一樣,可以參考kippo的介紹文件。
可以看到一些相關資料的紀錄。
當要把服務停下的時候,並不是exit或者deactivate離開這個環境就好。
請確實的進行cowrie stop動作。
後記
cowrie比kippo好的一點是指令的運用,
kippo致命傷在離開terminal時會露出馬腳。
而cowrie比較能夠讓惡意人士沒有在蜜罐的感覺。
如果熟悉kippo的人,應該很快就能上手cowrie
畢竟Cowrie是由kippo更改出來的中交互ssh蜜罐。
參考網址:
https://klionsec.github.io/2017/10/19/cowrie/