Kippo蜜罐的部署、誘捕節點的搭建以及自動告警


        Kippo是一個中等交互的SSH蜜罐,提供了一個可供攻擊者操作的shell,攻擊者可以通過SSH登錄蜜罐,並做一些常見的命令操作。

        當攻擊者拿下一台服務器的權限后,很可能會進行小范圍的端口探測或者批量的端口掃描,以便橫向擴展,獲取更多服務器的控制權,因此部署內網SSH蜜罐,把攻擊者引誘到蜜罐里來,觸發實時告警,即可讓安全人員及時知道已經有攻擊者滲透內網、知道哪台服務器已被控制、以及攻擊者在蜜罐上做了哪些操作。

       如何把攻擊者引誘到蜜罐里來,除了要看蜜罐是否具備主動欺騙能力外,還要看蜜罐在公司網絡中的部署密度。網絡安全域通常會要求不同的網段是隔離的,而且攻擊者很可能是先在同一網段進行掃描,不會上來就掃描全網。所以如果只有一台蜜罐服務器,攻擊者的掃描行為很可能不會觸碰到蜜罐,也就不會觸發蜜罐告警,所以理想情況是在所有網段均部署誘捕節點,但如果都用服務器部署的話,又太浪費資源,所以我們通過端口轉發的方式,利用虛擬機、虛擬vlan網卡、現有服務器等方式來充當誘捕節點。

一、蜜罐架構圖

 

二、蜜罐的搭建

1、Kippo

1.1  Kippo的安裝

GitHub地址:https://github.com/desaster/kippo

安裝環境:centos7

為確保蜜罐服務器的安全,建議在windows服務器上安裝vmware,然后安裝centos。

下載代碼、安裝相關的依賴

1 git clone https://github.com/desaster/kippo.git  # 無法運行git命令,請先安裝  yum -y install git
2 yum –y install  twisted  python-zope-interface  python-pyasn1 
3 yum -y install python-devel mysql-devel 
4 yum install -y python2-paramiko 
5 pip install twisted==15.2.0 # 無pip命令,請執行 yum -y install python-pip ; 如果提示沒有pip包,請先執行yum -y install epel-release。安裝twisted時如果提示unable to execute gcc: No such file or directory,運行命令 yum install gcc
6 pip install mysql-python

解壓下載的kippo-master.zip

unzip kippo-master.zip 

因為kippo不能以root運行,所以新建一個kippo賬號

 

useradd -d /kippo kippo

把kippo文件夾復制到/kippo 目錄下面,並更改這個文件夾的所有者

cp -R kippp /kippo/chown -R kippo:kippo  kippo

安裝mysql 

yum install mysql-server # 提示沒有mysql-server安裝包,
請執行
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm

創建數據庫和賬號

create database kippo;
GRANT ALL PRIVILEGES ON  kippo.* TO kippo@localhost IDENTIFIED BY 'your password';

 

初始化數據表

 mysql -ukippo -p -Dkippo < /kippo/kippo/doc/sql/mysql.sql

在/kippo/kippo下面復制配置文件,並修改相應的配置

cp kippo.cfg.dist kippo.cfg
vim kippo.cfg

啟動開始程序    # 如果提示缺少哪些模塊,pip install 安裝,如缺少Crypto  執行pip install  pycrypto,缺少pyasnl.error  執行 pip  install pyasnl

sh start.sh

1.2 kippo測試

查看kippo監聽的端口,默認2222端口

kippo/data 的userdb.txt 保存了ssh登陸蜜罐的用戶名和密碼,也可以根據公司實際情況,添加更逼真的SSH賬號和弱密碼。

用另一台機器SSH登錄蜜罐的2222端口(用戶名和密碼就是上面userdb.txt中的)

模擬交互登錄

登錄以及登錄后的操作日志,在log文件夾下面的kippo.log里面

 

三、創建誘捕節點

理想情況我們要在公司所有的VLAN網段部署誘捕節點,但如果都用服務器部署的話,太浪費資源,以下介紹三種方法創建誘捕節點:

方法一:

IDC如果有虛擬機,可以在虛擬機上添加不同vlan的網卡,通過添加策略路由的方式讓這些誘捕IP連通。上面架構圖使用的就是這種方法。

圖例:添加了很多張網卡

策略路由的具體配置如下

#創建策略路由表
echo "32 net_32" >> /etc/iproute2/rt_tables echo "47 net_47" >> /etc/iproute2/rt_tables echo "50 net_50" >> /etc/iproute2/rt_tables echo "56 net_56" >> /etc/iproute2/rt_tables #編輯啟動文件,把下面的配置添加進去
vim /etc/rc.local
#啟用8021q
/sbin/modprobe 8021q
#本機與默認網關的路由,否則會顯示路由不可達
ip route add 172.10.32.0/24 dev eth1 table net_32
ip route add 172.10.47.0/24 dev eth2 table net_47
ip route add 172.10.50.0/24 dev eth3 table net_50
ip route add 172.10.56.0/24 dev eth4 table net_56
# 默認網關 ip route add default via 172.10.32.1 table net_32 ip route add default via 172.10.47.1 table net_47 ip route add default via 172.10.50.1 table net_50 ip route add default via 172.10.56.1 table net_56 # 配置策略路由 ip rule add from 172.10.32.2/32 table net_32 ip rule add from 172.10.47.2/32 table net_47 ip rule add from 172.10.50.2/32 table net_50 ip rule add from 172.10.56.2/32 table net_56

 方法二:

物理機上添加一張網卡,在此網卡上配置多個vlan虛擬網卡,然后類似上述的配置通過策略路由的方式實現IP的連通,同時需要交換機互聯的端口上配置trunk模式。

方法三:

 IDC各vlan找一台在用但重要程度不高的服務器,在現有的網卡下,創建一張子網卡,自網卡配置誘捕節點IP

如:查看現有的ifcfg-eth0文件

cat  /etc/sysconfig/network-scripts/ifcfg-eth0

確保IP為靜態IP,且掩碼、網關填寫正確

創建誘捕節點IP的配置文件

vim  /etc/sysconfig/network-scripts/ifcfg-eth0:1 

重啟新配置文件生效

ifup eth0:1

四、設置端口轉發(安裝rinetd)

目標:當攻擊者掃描探測誘捕節點IP的22端口時,把流量轉發至蜜罐服務器的kippo程序上。

在此需要說明的是:我們要把訪問誘捕節點的22端口轉發過去,且rinetd要轉發的源端口不能被本地占用,所以需要把誘捕節點服務器的SSH先改為其他端口,22端口預留給轉發使用,流量可以轉發到蜜罐所在物理機的任意端口,然后通過vmware端口映射把流量最終鏡像給蜜罐服務器的2222端口(kippo的默認端口是2222)

rinetd官網地址:https://boutell.com/rinetd/

通過官網下載安裝包

上傳至服務器解壓

tar –zxvf rinetd.tar.gz

這地方有一個坑 :rinetd默認只有在進程被關閉的時候,才會把日志寫到rined的日志文件中(/var/log/rined.log),也就是說當rinetd一直在運行的時候,即使有流量被轉發了,也無法在日志文件中看到日志。所以在編譯安裝rinetd前,我們要先修改它的源代碼,增加一個fflush函數強制更新日志,然后在去編譯安裝。編輯rinetd.c這個文件,找到修改的位置,按下圖添加一行代碼。

 

 

 

創建稍后編譯時需要用到的文件夾

mkdir /usr/man/man8

編譯&安裝

make
make install

上一步make的時候可能會報兩種錯誤

第一種:

解決方法:修改Makefile文件

第二種錯誤:提示超出系統最大定義端口,修改rinetd.c文件的544和567行,把65536端口改成65535

創建配置文件

touch /etc/rinetd.conf
誘捕節點IP 22  蜜罐所在物理機的IP  2222   # 源地址 端口 目的地址  端口,因為誘捕節點很多,所以需要些很多行配置
logfile  /var/log/rinetd.log      # 日志文件

運行這個工具

rinetd 
#關掉工具的命令是 pkill rinetd

當攻擊者訪問專用IP的22端口時,會被轉發至蜜罐的SSH服務。

rinetd會產生日志,具體路徑是在/etc/rinetd.conf中設置的,日志樣例如下

成功登錄蜜罐后,在偽造的shell中進行命令操作,蜜罐服務器也會記錄一份日志,但是這地方記錄的訪問源IP是我們誘捕節點的IP,不是攻擊者所在服務器的IP地址。所以在下面日志收集的時候,既需要收集rinetd轉發的日志,也需要收集kippo日志。

 

四、自動告警

 可通過splunk實現自動告警

首先通過syslog的方式把端口轉發(rinetd.log)和蜜罐(kippo.log)這兩份日志實時同步至splunk服務器。

splunk上新建一個應用(kippo)

splunk新建索引(kippo)

 通過本地文件的方式導入數據

 

splunk設置告警

 

 轉載請注明出處: https://www.cnblogs.com/Eleven-Liu/p/9204244.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM