1:蜜罐概述:
蜜罐是一种软件应用系统,用来充当入侵诱饵,引诱黑客前来攻击。
攻击者入侵后,通过监测与分析,就可以知道他是如何入侵的,随时了解针对组织服务器发动的最新的
攻击和漏洞。
蜜网概述:当多个蜜罐被网络连接在一起时模拟一个大型网络,并利用其中一部分主机吸引黑客入
侵,通过监测、观察入侵过程,一方面调查入侵者的来源,另一方面考察用于防护的安全措施是否有效。
这种由多个蜜罐组成的模拟网络就称为蜜网。
怎么吸引: 不做任何防护措施,root 密码是 123456 ,不打补丁。 黑客很容易找到你。放到公网上
kippo概述:kippo是一个中等交互的SSH蜜罐,提供了一个可供攻击者操作的shell,攻击者可以通过
SSH登录蜜罐,并做一些常见的命令操作。
当攻击者拿下一台服务器的权限后,很可能会进行小范围的端口探测或者批量的端口扫描,以便横向扩
展,获取更多服务器的控制权,因此部署内网SSH蜜罐,把攻击者引诱到蜜罐里来,触发实时告警,即可让安全人员及时知道已经有攻击者渗透内网、知道哪台服务器已被控制、以及攻击者在蜜罐上做了哪些操作
下图63服务器是黑客扫出的目标机默认是22端口, 将22端口空出给黑客(因黑客会ssh链接22端口进入服务器) 我们将rinetd重定向服务器到64这台蜜罐服务器,捕捉黑客傻逼操作) , 管理员若要进入服务器ssh另开一个端口6333 , 63这台服务器生成环境无任何影响
2:蜜罐服务器Kippo安装:
Kippo基于py 需要安装依赖:
yum install -y python-twisted* yum -y install python-devel mysql-devel yum install -y python2-paramiko yum -y install epel-release yum -y install python-pip 安装依赖包:pip install -i(-i临时用清华源) https://pypi.tuna.tsinghua.edu.cn/simple twisted==15.2.0 mysql依赖包pip install mysql-py 依赖模块 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pycrypto
因为kippo不能以root运行,新建一个kippo账号
useradd -d /kippo kippo
安装kippo
git clone https://github.com/desaster/kippo.git #下载 把kippo文件夹复制到/kippo 目录下面,并更改这个文件夹的所有者 cp -r kippo/ /kippo/ chown -R kippo:kippo /kippo
安装maridb
[root@xuegod64 ~]# yum install mariadb-server mariadb -y [root@xuegod64 ~]# systemctl start mariadb
创建数据库和账号
[root@xuegod64 ~]# mysql MariaDB [(none)]> create database kippo; MariaDB [(none)]> GRANT ALL PRIVILEGES ON kippo.* TO kippo@localhost IDENTIFIED BY '123456'; #把所有权限给kippo这个用户
测试登录
[root@xuegod64 ~]# mysql -u kippo -p123456
初始化kippo数据表
[root@xuegod64 ~]# mysql -ukippo -p -Dkippo < /kippo/kippo/doc/sql/mysql.sql 在/kippo/kippo下面复制配置文件,并修改相应的配置 [root@xuegod64 ~]# cd /kippo/kippo/ [root@xuegod64 ~]# cp kippo.cfg.dist kippo.cfg [root@xuegod64 ~]# vim kippo.cfg 1:set num 2:去掉注释 ctrl+v 进入可视化 向下按t键再回车去掉选中的行注释 改: 163 #[database_mysql] 164 #host = localhost 165 #database = kippo 166 #username = kippo 167 #password = secret 168 #port = 3306 为: [database_mysql] host = localhost database = kippo username = kippo password = 123456 port = 3306
启动kippo
[root@xuegod64 ~]# su - kippo [kippo@xuegod64 ~]$ cd kippo/ [kippo@xuegod64 kippo]$ ./start.sh
3:kippo使用方法
1. 查看监听的状态是否开启
查看kippo监听的端口,默认2222端口 [kippo@xuegod64 kippo]$ netstat -antup | grep :22netstat -pantu | grep :22
2. kippo默认的账号密码存位置 /kippo/kippo/data/userdb.txt,给傻屌加几个账号
3:蜜罐服务器开启 日志监听 tail -f /kippo/kippo/log/kippo.log
4:用测试黑客机链接 64 服务器 ssh admin@192.168.1.64 2222 (因为访问63 22端口就转发到64的2222端口,测试用2222链接), 上套了 ,很稳
5:播放视频一样监控黑客操作
记录地址 : kippo/kippo/log/tty/当天日期.log文件
命令执行地址: /kippo/kippo/utils/playlog.py 当天日期.log文件
4:生产机使用 rinetd 将ssh 22端口连接转发给蜜罐服务器
安装:
rinetd官网地址:https://boutell.com/rinetd/ rinetd -- internet "redirection server" rinetd——互联网“重定向服务器” 通过官网下载安装包
目标:当攻击者扫描探测诱捕节点IP的22端口时,把流量转发至蜜罐服务器的kippo程序上。
在此需要说明的是:我们要把访问诱捕节点的22端口转发过去,且rinetd要转发的源端口不能被本地
占用,所以需要把诱捕节点服务器的SSH先改为其他端口,22端口预留给转发rinetd使用,流量可以转发到蜜罐
所在物理机的任意端口,然后通过vmware端口映射把流量最终镜像给蜜罐服务器的2222端口(kippo的
默认端口是2222)
修改生产服务器端口
[root@xuegod63 ~]# vim /etc/ssh/sshd_config 改:17 #Port 22 为:17 Port 31911 #改成不常用的端口 [root@xuegod63 ~]# systemctl restart sshd
部署rinetd (rz上传)
[root@xuegod63 ~]# tar zxvf rinetd.tar.gz [root@xuegod63 ~]# cd rinetd/ 编译之前有个坑: 这地方有一个坑 :rinetd默认只有在进程被关闭的时候,才会把日志写到rined的日志文件中 (/var/log/rinetd.log),也就是说当rinetd一直在运行的时候,即使有流量被转发了,也无法在日志文 件中看到日志。所以在编译安装rinetd前,我们要先修改它的源代码,增加一个fflush函数强制更新日志, 然后在去编译安装。编辑rinetd.c这个文件,找到修改的位置,按下图添加一行代码。 [root@xuegod63 rinetd]# vim rinetd.c 在1460行后面插入: 1461 fflush(logFile); 创建稍后编译时需要用到的文件夹 [root@xuegod63 rinetd]# mkdir -p /usr/man/man8 修改源代码解决报错的问题。 第一种:报警告: [root@xuegod63 rinetd]# make cc -DLINUX -g -c -o rinetd.o rinetd.c rinetd.c:176:6: 警告:与内建函数‘log’类型冲突 [默认启用] void log(int i, int coSe, int result); ^ cc -DLINUX -g -c -o match.o match.c gcc rinetd.o match.o -o rinetd 解决方法:修改Makefile文件 [root@xuegod63 rinetd]# vim /root/rinetd/Makefile 改: 1 CFLAGS=-DLINUX -g 为: CFLAGS=-DLINUX -g -fno-builtin-log 第二种错误:提示超出系统最大定义端口,修改rinetd.c文件的544和567行,把65536端口改成65535 [root@xuegod63 rinetd]# vim /root/rinetd/rinetd.c 改:544 if ((bindPort == 0) || (bindPort >= 65536)) { 为:544 if ((bindPort == 0) || (bindPort >= 65535)) { 改:567 if ((connectPort == 0) || (connectPort >= 65536)) { 为:567 if ((connectPort == 0) || (connectPort >= 65535)) { 编译&安装 [root@xuegod63 rinetd]# make [root@xuegod63 rinetd]# make install 创建配置文件 [root@xuegod63 rinetd]# vim /etc/rinetd.conf #写入以下内容 192.168.1.63 22 192.168.1.64 2222 logfile /var/log/rinetd.log 注: 诱捕节点IP 22 蜜罐所在物理机的IP 2222 # 源地址 端口 目的地址 端口,如果诱捕节点很多, 可以写很多行配置 logfile /var/log/rinetd.log # 日志文件
开启运行
rinetd #进入rinetd,运行 netstat -pantu | grep:22 #查看22端口是被谁在用 tcp 0 0 192.168.1.63:22 0.0.0.0:* LISTEN 5340/rinetd
用个测试ssh链接 , 查看是否正常转发(链接断开才会写入日志)
tail -f /var/log/rinetd.log
5:定义自动触发录屏能录制黑客的一切操作
场景:(与蜜罐机无关,黑客直接上了生产机)当黑客通过某种手段获得服务的账号和密码也登录上到服务上,并做了一些操作,比较挟持了root用户的密码、留下了后门,并把后门程序的进程隐藏了,甚至在你的服务器上挂了马,而后黑客又把所有痕迹都清除了。这时候的你会怎么处理?
答:script 命令:
可以完整记录屏幕上输入的命令与输出结果。可录制黑客在你服务上做的一切操作,而我们通过回放就
可以得知黑客使用了那些命令,隐藏了哪些进程
完成录屏操作,用到的script 和 scriptreplay两个命令,在 Linux 发行版中都有默认安装。
script -t 2>xuegod.file -a xuegod #录制后随意做点操作,接 下来的任何操作都会被记录 scriptreplay -d 10 (-d 10 10倍播放) xuegod.file xuegod
-q 或 - -quiet 参数可以使script命令以静默模式运行,不显示script启动和exit的命令的输出信息,
黑客可以完全察觉不到在录屏。
自动触发监控,黑客登陆的操作与实时监控
思路:用户登录到系统后,自动触发 script 录屏,并记录登录时间、登录的用户。
这个时候就只要让 script 命令在登录时自动运行,我们可以把它添加进 shell 环境配置文件中。
创建一个目录用于存放录制后的文件,这里我故意伪装为 dhcpd,让黑客不容易察觉到
[root@xuegod63 ~]# mkdir -p /etc/dhcpd/
[root@xuegod63 ~]# vim /etc/profile #在中间处找个位置写入以下内容 script -t -f -q 2>/etc/dhcpd/$USER-$UID-`date +%Y%m%d%H%M%S`.time -a /etc/dhcpd/$USER-$UID-`date +%Y%m%d%H%M%S`.his if [ "$SHLVL" = 1 ]; then exit fi
黑客机直接访问生成机 , 则一些操作记录在/etc/dhcpd/目录下
播放黑客所操作的 scriptreplay -d 10 (-d 10 10倍播放) 文件名