現場(環境):CentOS 6.8 套件: kippo
原因:
很多時候我們不清楚駭客溜進我們的系統之後到底做了什麼?
除了透過之前介紹的tripwise來用確認有新增及修改什麼檔案之外,
還可以透過honeypots的方式來做這件事情。
但honeypots不建議安裝在你的任何一台伺服器上,
而是將他變成一台獨立的靶機。
這次我們將先介紹kippo這一套模擬ssh連線的honeypots。
處理方式:
其實使用CentOS 7 or CentOS6 都可以。
當初看介紹文件很多人都是透過iptables轉port的方式讓提供連線。
所以我就直接用CentOS6了,但其實這些細部設定都可以再修改。
Step 1. 擴增我們CentOS的yum repo資源庫,並將系統更到最新。
#wget-O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
#yum -y install epel-release
#yum update
Step 2. 安裝pip 套件。
我們有一個套件一定要透過pip安裝,
因為CentOS內預設的版本太舊 ; 這個套件是Twisted。
#yum -y install python-pip
Step 3. 下載kippo 套件檔
#wget https://github.com/desaster/kippo/archive/master.zip
#unzip master.zip
Step 4. 安裝kippo運作時所需的相依性套件。
#yum -y install python-zope-interface python-pyasn1 openssl-devel python-dev
這邊要特別說到Twisted,這邊我試過幾個版本
真的跟參考網站內說的一樣,只有特定版本適用。
所以我們用pip 來安裝Twisted套件,
因為使用CentOS來裝的話,會裝到Twisted-8版本。
這邊說到一定要是15.1.0版本,在之後的版本都不適用。
#pip install service_identity
#pip2 install twisted==15.1.0
Step 5. 建立新帳號,並將kippo套件移到一般使用者可以執行的地方。
#adduser kippo
#mv kippo-master /home/kippo/kippo
#chown -R kippo:kippo /home/kippo/kippo
Step 6. 修改設定檔內容
#cd /home/kippo/kippo
先將預設腳本複製成kippo的設定檔。
#cp kippo.cfg.dist kippo.cfg
看有沒有需要要修改設定檔
#vim kippo.cfg
如果你是用 CentOS 7 ,而你又不想裝netfilter(iptables)的話,
可以考慮在這邊把port 換掉。
而這邊的hostname預設是svr03,但都用一樣的未免太容易被看穿。
所以這邊還是簡單的把hostname做了個修改的動作。
######################!
ssh_port = 2222
hostname = svr03
######################!
Step 7. 修改ssh service的服務埠。
我們之後會用kippo模擬成我們的SSH服務。
當然用的port就會是TCP-22。
所以我們要將原本的SSH port 做一個修改。
#vim /etc/ssh/sshd_config
找到#Port 22 這一行,把註解(#)拿掉。
並將後面的22 修改成你預計使用的Port就可以了。
設定完重啟SSH服務,並自己測試能不能正常連線。
#service sshd restart
Client測試連線
#ssh root@[kippo Server的IP] -p [修改的port]
Step 8. 透過netfilter (iptables) 來做PortForward
如果是要長駐使用的話,建議寫進/etc/sysconfig/iptables設定檔裏面。
#iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-ports 2222
其實做到這邊你就可以簡單測試一下了。
Step 9. 服務啟用
切換到一般帳號,kippo禁止使用root開啟
#su - kippo
#cd /home/kippo/kippo
#./start.sh
運作畫面
#!###################################
twistd (the Twisted daemon) 15.1.0
Copyright (c) 2001-2015 Twisted Matrix Laboratories.
See LICENSE for details.
Starting kippo in the background...
Another twistd server is running, PID 2596
This could either be a previously started instance of your application or a
different application entirely. To start a new one, either run it in some other
directory, or use the --pidfile and --logfile parameters to avoid clashes.
#!######################################
你現在可以使用ssh 連線到kippo Server測試看看。
你會發現你原本連線到SSH的密碼進不去了。
因為kippo 他不會模擬你原本系統上的密碼,
而是使用他自己設定的帳號密碼檔案。
那隻帳號密碼的檔案在data資料夾下面。
#cat /home/kippo/kippo/data/userdb.txt
root:0:123456 ( 格式→ 帳號:UID:密碼)
可以看到他這邊設定唯一個帳號就是root,
而且是用的還是最容易就可以破解的密碼,
uid方面也是完全模擬root 的 uid 0。
在這邊,我們可以依照他的檔案的內容格式添加帳號,
也可以將root的密碼修改掉。
當然若你就是故意要讓人連進來看他們要做什麼的,
我也建議你把密碼改成稍微複雜一點的,
密碼太簡單,反而更容易起疑心。
我們啟用服務是用start.sh,關閉服務則是使用stop.sh
這邊要注意一下,
stop.sh在我們解壓縮時是沒有執行權限的,要自己添加上去後才能用。
#chmod +x /home/kippo/kippo/stop.sh
#/home/kippo/kippo/stop.sh
#!###########
Stopping kippo...\n
#!###########
Step 10. 看日誌
在 ./kippo/log/kippo.log 裏面可以看到使用者連線進來的操作。
#cat /home/kippo/kippo/log/kippo.log
可以從log裡面看到,來源端IP連線進來後下了什麼樣的指令。
#!#######################
…
017-10-17 11:19:29+0800 [SSHChannel session (0) on SSHService ssh-connection on HoneyPotTransport,1,來源端IP] CMD: ifconfign
2017-10-17 11:19:29+0800 [SSHChannel session (0) on SSHService ssh-connection on HoneyPotTransport,1,來源端IP] Command found: ifconfign
2017-10-17 11:19:29+0800 [SSHChannel session (0) on SSHService ssh-connection on HoneyPotTransport,1,來源端IP] Reading txtcmd from "/home/unormal/kippo/txtcmds/sbin/ifconfig"t
…
#!#######################
kippo 上面另外一個看日誌的方式,很有趣。
可以把偷偷連進kippo server的使用者的操作,
像播影片一樣,在文字介面重新播放一次。
這個功能要以python執行kippo內的一隻playlog.py的檔案
# python playlog.py /home/kippo/kippo/log/tty/20171017-111529-6623.log
在kippo/log內的日誌檔案除了剛剛我們可以直接看的內容外,
還有一個是包在kippo/log /tty/資料夾內,可以透過playlog.py播放的檔案。
當然有這些還是沒有很直覺化,
我們明天再來介紹透過Twisted 紀錄資料到mysql當中,
並透過kippo-Graph顯示現在的狀況。
下面是playlog.py所存在的路徑。
#ls -l /home/unormal/kippo/utils/
#!##################
total 36
-rwxr-xr-x 1 unormal unormal 682 Oct 1 2016 convert32.py
-rwxr-xr-x 1 unormal unormal 2032 Oct 1 2016 createfs.py
-rwxr-xr-x 1 unormal unormal 16516 Oct 1 2016 fsctl.py
-rwxr-xr-x 1 unormal unormal 668 Oct 1 2016 passdb.py
-rwxr-xr-x 1 unormal unormal 3745 Oct 1 2016 playlog.py
#!##################
附註:
Extra 1. 資料架內物件
另外簡單介紹一下透過SSH進入kippo時看到的系統檔,
都是Honeyfs 這裡的模擬檔案,並非真的。
在 data資料夾內放我們偽造的ssh key,lastlog.xtx檔以及最重要的帳號密碼檔(userdb.txt)
可以透過格式自己修改「username:uid:password」
Extra 2. 用Nmap檢查服務到底有沒有開啟
#nmap -p 22 [kippo IP位址]
PORT STATE SERVICE
22/tcp filtered ssh
#nmap -p 22 [kippo IP位址]
PORT STATE SERVICE
22/tcp open ssh
filter 表示 ,服務沒有對你開啟,你沒辦法連線。
open表示,服務有對你開啟,你可以連線。
參考網址:
https://secvul.com/topics/484.html
(未完)
留言列表