Kippo 是一个中等交互的 SSH 蜜罐,旨在记录暴力破解攻击,最重要的是记录攻击者执行的整个 shell 交互过程。
原始主页:https://code.google.com/p/kippo/。
这是 Kippo 的个人公开分支,包含额外功能以及一些修改,以降低蜜罐被指纹识别的可能性。
这基于 "Kippo Honeypot v0.8 (svn r248 - 2014-05-19)"。
已在 Debian 7 stable 上测试。
apt-get update
apt-get -y install openssl python python-dev python-openssl python-pyasn1 python-twisted git
git clone git://github.com/g0tmi1k/kippo.git /opt/kippo/
cp -n /opt/kippo/kippo.cfg{.dist,}
chown -R nobody\:nogroup /opt/kippo/
su nobody -c '/bin/bash /opt/kippo/start.sh'
可以使用 "iptables" 将流量重定向到 TCP 2222 端口(Kippo 的默认端口),或者……使用 "authbind" 允许非特权用户(nobody)使用特权端口 TCP 22(默认 SSH 端口)。
apt-get -y install authbind
touch /etc/authbind/byport/22
chown nobody\:nogroup /etc/authbind/byport/22
chmod 0777 /etc/authbind/byport/22
sed -i 's/^twistd /authbind --deep twistd /' /opt/kippo/start.sh
sed -i 's/^ssh_port = .*/ssh_port = 22/' /opt/kippo/kippo.cfg
[ -e /opt/kippo/kippo.pid ] && kill $(cat /opt/kippo/kippo.pid) && sleep 2
su nobody -c '/bin/bash /opt/kippo/start.sh'
……别忘了事先修改“真实”的 SSH 端口!
sed -i 's/^Port .*/Port 222/' /etc/ssh/sshd_config
service ssh restart
一些关于如何扩展自定义配置的建议,使实例独一无二_(从而降低被检测的可能性)_。
...
hostname = uniquehostname
...
文件:./kippo.cfg
uniquehostname
文件:./honeyfs/etc/hostname
...
127.0.0.1 uniquehostname
....
文件:./honeyfs/etc/hosts
...
ssh_version_string = SSH-2.0-OpenSSH_6.0p1 Debian-4
...
文件:./kippo.cfg
*************************************************************
* All connections are monitored and recorded. *
* Disconnect IMMEDIATELY if you are not an authorized user! *
*************************************************************
文件:./honeyfs/etc/issue.net
这会将 "Password1" 添加到已接受的密码列表中。
注意:添加 "*" 将接受任何提交的密码。
cd /opt/kippo/ && python utils/passdb.py data/pass.db add Password1
以下命令将在 /root/accounts.zip.enc 中生成一个“虚假”文件_(大小为 7MB)_。
dd if=/dev/urandom of=honeyfs/root/accounts.zip.enc bs=1M count=7
这些只是一些建议——请随意按照您的意愿修改蜜罐!
Kippo 是一个“模拟环境”。攻击者被置于一个“受控的牢笼”中,它只会对预先定义(即白名单)的命令/文件做出响应。因此,这可能会暴露它,例如:
Kippo 远非“完美”,有经验的攻击者可以轻易识别它。但是,这可能会迷惑甚至欺骗业余攻击者,使其相信它是真实的。因此,Kippo 会在有人出现在不该出现的地方时发出指示(即早期预警系统)——而且观看回放也很有趣 ;)。
如果您不接受风险,请勿使用。作者不对本程序的使用负责,包括任何可能的数据丢失和/或损害。
此代码的设计和创建目的是将未经授权的用户引入系统及其所在的网络。因此,他们可能会对您的设备执行恶意操作。
代码本身_(例如 wget 命令)_可用于连接可能或可能未公开暴露的服务。此外,由于访问资源时没有限制,存在各种“DoS”漏洞。代码本身也未经安全审计。
如果您打算使用它,强烈建议您在安全、最新、隔离的机器上运行,该机器不包含任何敏感信息,并且与网络的其他部分隔离(例如 DMZ 区域)。