close

現場(環境):CentOS 6.8 套件: kippo

 


原因:

 

很多時候我們不清楚駭客溜進我們的系統之後到底做了什麼?

 

除了透過之前介紹的tripwise來用確認有新增及修改什麼檔案之外,

 

還可以透過honeypots的方式來做這件事情。

 

honeypots不建議安裝在你的任何一台伺服器上,

 

而是將他變成一台獨立的靶機。

 

這次我們將先介紹kippo這一套模擬ssh連線的honeypots

 


 

處理方式:

 

其實使用CentOS 7 or CentOS6 都可以。

 

當初看介紹文件很多人都是透過iptablesport的方式讓提供連線。

 

所以我就直接用CentOS6了,但其實這些細部設定都可以再修改。

 

Step 1. 擴增我們CentOSyum 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 ServerIP] -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 keylastlog.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表示,服務有對你開啟,你可以連線。

 

 

參考網址:

 

http://vinc.top/2016/06/29/centos%E4%B8%8B%E5%AE%89%E8%A3%85%E8%BF%87%E7%A8%8Bssh%E8%9C%9C%E7%BD%90kippo/

 

https://secvul.com/topics/484.html

 

 

(未完)

arrow
arrow
    全站熱搜

    IT001 發表在 痞客邦 留言(0) 人氣()