蜜罐cowrie搭建和部分问题处理

因为目前研究的内容涉及到蜜罐,找了很久的资料,终于找到一个中交互的蜜罐cowrie,这是一个外国人写的github项目,打开github项目
这个蜜罐作者在github和他提问他真的很快就回复了。非常赞。

用途

是一款可以对ssh,telnet,http等等协议攻击进行记录,对于输入命令和上传文件均有记录的一款软件。
记录可以设置在日志文件中或者通过配置数据库,导入数据库中方便查询。

效果查看

记录连接ssh的客户端
这里写图片描述
记录尝试暴力破解的用户名和密码
这里写图片描述
登陆之后的操作
这里写图片描述

安装前奏

  • 大环境
    ubuntu 16.04

  • 版本选择

蜜罐的作者在github上有很多个版本,目前我下载并且使用的是
这里写图片描述
这里写图片描述

在ubuntu中可以直接用,下载的就是最新的版本

git clone http://github.com/micheloosterhof/cowrie

请注意下,这个版本没有start.sh和stop.sh,和目前有的教程可能不完全一致。

开始安装

  • step0:参考github intall.md文件

打开参考

  • step1: 安装必要的支持软件,在ubuntu环境,root用户
sudo apt-get install git python-virtualenv libssl-dev libffi-dev build-essential libpython-dev python2.7-minimal authbind
  • step2: 创建一个cowrie用户
sudo adduser --disabled-password cowrie

因为我对linux的权限不是特别驾轻熟就,本来照着参看,创建没有密码登陆的用户,但是在使用apt install的时候,系统提示输入密码,但是创建用户没有密码,所以折腾了下。

折腾内容:
root用户下 移除cowrie用户密码 passwd –delete cowrie
root用户下 创建cowrie用户新密码 passwd cowrie
两次输入新密码

提示cowrie用户没有sudo权限
root用户下,修改文件/etc/sudoers

chmod 777 /etc/sudoers
vim /etc/sudoers
在文件中添加如下内容
cowrie ALL=(ALL)ALL

这里写图片描述
退出后记得改回去 chmod 555 /etc/sudoers

  • step3:切换账户,并从github下载cowrie
git clone http://github.com/micheloosterhof/cowrie
  • step4:打开cowrie文件夹,安装虚拟环境
$ cd cowrie
$ pwd

/home/cowrie/cowrie

$ virtualenv cowrie-env

New python executable in ./cowrie/cowrie-env/bin/python
Installing setuptools, pip, wheel…done.

  • step5:激活环境并安装必要的包
$ source cowrie-env/bin/activate
注释下:一下的操作全部是在cowrie-env环境运行的(cowrie-env)
(cowrie-env) $ pip install --upgrade pip
(cowrie-env) $ pip install --upgrade -r requirements.txt
  • step6:修改cowrie蜜罐的有关配置文件
(cowrie-env) $ cp cowrie.cfg.dist cowrie.cfg

修改cowrie.cfg
打开ssh,并修改监听端口
这里写图片描述
这里写图片描述
配置输出文件output
这里写图片描述
配置数据库mysql进行记录
这里写图片描述

  • step7:生成DSA密钥,避免有的版本的Twisted不兼容
(cowrie-env) $ cd data
(cowrie-env) $ ssh-keygen -t dsa -b 1024 -f ssh_host_dsa_key
(cowrie-env) $ cd ..
  • step8:明确cowrie的路径
(cowrie-env) $ export PYTHONPATH=/home/cowrie/cowrie
  • step9:在root用户下将ubuntu自身的ssh监听端口修改,并修改iptables

首先开启另外一个终端界面检查是否安装sshd

$ ps -ef|grep sshd

如果有结果则已经安装,否则进行安装

$ sudo apt-get install openssh-server

修改sshd_config文件将端口改为千万不要cowrie.cfg文件中监听的端口一致 62223,否则进入22端口的流量就转发到新的ssh端口,蜜罐被屏蔽掉了

$ vim /etc/ssh/sshd_config

这里写图片描述

$ sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 62223

这里会提示cowrie输入密码
也就是step1中说的多余的操作

补充
docker报错没有iptables指令,root用户下

sudo apt-get install iptables

使用

iptables-save

这里写图片描述
查看路由规则,如果写错了用D替换上面的A
学习参考链接

  • step10:root用户下,配置mysql数据库
    首先检查是否安装mysql
    没有安装,进行安装
sudo apt-get install mysql-server
apt-get isntall mysql-client
sudo apt-get install libmysqlclient-dev

安装过程中会提示设置密码什么的,注意设置了不要忘了,安装完成之后可以使用如下命令来检查是否安装成功:

sudo netstat -tap | grep mysql

通过上述命令检查之后,如果看到有mysql 的socket处于 listen 状态则表示安装成功。

登陆mysql数据库可以通过如下命令:

mysql -u root -p

-u 表示选择登陆的用户名, -p 表示登陆的用户密码,上面命令输入之后会提示输入密码,此时输入密码就可以登录到mysql。

  • step11:在虚拟环境下,安装mysql必备的与python有关的开发包
(cowrie-env) $ sudo apt-get install python-dev
(cowrie-env) $ sudo apt install python-pip
(cowrie-env) $ sudo pip install mysql-python
(cowrie-env) $ sudo apt-get install python-MySQLdb

apt-get install python-MySQLdb特别重要,注意大小写
补充
在docker下安装,和上述操作有出入
这里写图片描述
补充输入指令

(cowrie-env) $ sudo easy_install pip
(cowrie-env) $ sudo pip install pip --upgrade
(cowrie-env) $ sudo pip install MySQL-python
(cowrie-env) $ sudo sudo apt-get install python-MySQLdb
  • step12:在虚拟环境下,创建名为cowrie的yoghurt表将该库的所有表权限赋给cowrie
$mysql -uroot –p
(输入安装mysql数据库root用户的密码)

进入mysql

mysql> CREATE DATABASE cowrie;
mysql> GRANT ALL ON cowrie.* TO cowrie@localhost IDENTIFIED BY 'cowrie';
mysql> exit;

这里的密码是和cowrie.cfg即第6步中
配置数据库mysql进行记录一致
这里写图片描述

  • step13:虚拟环境下进入cowrie安装目录中,使用cowrie用户登录数据库,进入cowrie库中,将/home/cowrie/cowrie/doc/sql/mysql.sql作为数据源即可制成多个表
(cowrie-env) $cd /home/cowrie/cowrie/
(cowrie-env) $mysql -uroot –p
(输入root密码)
(cowrie-env) $use cowrie;
(cowrie-env) $source /home/cowrie/cowrie/doc/sql/mysql.sql;

step14:虚拟环境下启动蜜罐并测试

(cowrie-env) $cd /home/cowrie/cowrie
(cowrie-env) $bin/cowrie start

这里写图片描述

开启另外一个终端,确定本机的ip地址
使用ssh连接攻击xshell进行连接
这里写图片描述
这里写图片描述
蜜罐的用户配置信息在home/cowrie/cowrie/data/userdb.txt中

连接成功,提示的信息是蜜罐的信息
这里写图片描述

附录

可能出现的问题
蜜罐第二天再启动不可以连接了,我列举几个查找问题的方法和可能的原因。

1、监听端口不对,默认监听端口是2222
查看所有端口使用情况

lsof -i

这里写图片描述
这边有问题,应该重新编写cowrie.cfg,利用备份的那个改,记得改数据库的配置

2、iptables转发规则失效

  • 打开转发开关

要让iptables的端口转发生效,首先需要打开转发开关

永久打开,重启依然有效
编辑/etc/sysctl.conf文件,将net.ipv4.ip_forward=1前面的#注释去掉,保存文件,然后执行sudo sysctl -p使其生效

  • 查看iptables规则
iptables-save
  • 开关机启动加载iptables规则

注:配置的规则系统默认重启后就失效,因此做开机启动时加载iptables的配置也有必要。
/etc/network/interfaces的末尾添加如下一行:
pre-up iptables-restore < /etc/iptables.rules

如果想在关机的时候自动保存修改过的iptables规则,可添加如下行
post-down iptables-save > /etc/iptables.up.rules

  • 端口转发出问题
    修改sshd_config文件将端口改为千万不要cowrie.cfg文件中监听的端口一致 62223,否则进入22端口的流量就转发到新的ssh端口,蜜罐被屏蔽掉了

参考文献
蜜罐Cowrie的简单搭建和用法介绍
Cowrie蜜罐搭建教程
老司机教你撘cowrie
Ubuntu环境下的iptables的端口转发配置实例

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Cowrie是一款基于Python的SSH蜜罐,可以模拟常见的Linux命令行环境,吸引黑客攻击并记录攻击行为。本文将介绍如何在Docker上搭建Cowrie,并使用Elasticsearch和Kibana实现数据可视化。 1. 安装Docker和Docker Compose 如果您还没有安装Docker和Docker Compose,可以按照官方文档进行安装。 2. 下载Cowrie 在本地创建一个文件夹,用于存放Cowrie相关文件。在命令行中进入该文件夹,运行以下命令: git clone https://github.com/cowrie/cowrie.git 3. 编辑配置文件 进入cowrie文件夹,复制一份配置文件: cd cowrie cp cowrie.cfg.dist cowrie.cfg 编辑cowrie.cfg文件,将以下参数修改为自己的配置: [ssh] # 监听地址 listen_endpoints = tcp:2222:interface=0.0.0.0 # SSH版本 ssh_version = 2 # SSH主机密钥 ssh_host_key = /cowrie/cowrie-git/var/lib/cowrie/cowrie-ssh-hostkey.pem # SSH用户认证 authfile = /cowrie/cowrie-git/etc/cowrie/passwd # SSH黑名单 tcp_proxy = /cowrie/cowrie-git/bin/tcp-proxy.py # SSH欢迎信息 banner_file = /cowrie/cowrie-git/data/fs/banner [output_elasticsearch] # Elasticsearch地址 elasticsearch_host = elasticsearch # Elasticsearch端口 elasticsearch_port = 9200 # Elasticsearch索引名 elasticsearch_index = cowrie-%Y.%m.%d 4. 编写Docker Compose文件 在cowrie文件夹下新建一个docker-compose.yml文件,内容如下: version: '3' services: cowrie: build: . ports: - "2222:2222" volumes: - ./cowrie.cfg:/cowrie/cowrie-git/etc/cowrie.cfg - ./data:/cowrie/cowrie-git/var/lib/cowrie depends_on: - elasticsearch environment: - ES_HOST=elasticsearch - ES_PORT=9200 elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.14.1 environment: - discovery.type=single-node - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - ./elasticsearch:/usr/share/elasticsearch/data ports: - "9200:9200" - "9300:9300" kibana: image: docker.elastic.co/kibana/kibana:7.14.1 ports: - "5601:5601" environment: - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 depends_on: - elasticsearch 该Docker Compose文件包含了三个服务: - cowrie:运行Cowrie蜜罐 - elasticsearch:运行Elasticsearch - kibana:运行Kibana 其中,cowrie和elasticsearch服务通过depends_on进行依赖关系的声明,kibana服务依赖elasticsearch服务。cowrie服务挂载了两个本地文件夹,一个用于存放cowrie.cfg配置文件,另一个用于存放Cowrie蜜罐所产生的数据。elasticsearch服务挂载了一个本地文件夹,用于持久化Elasticsearch数据。 5. 启动服务 在命令行中进入cowrie文件夹,运行以下命令启动服务: docker-compose up -d 6. 访问Kibana 在浏览器中访问http://localhost:5601/,进入Kibana界面。在左侧的导航栏中,点击“Discover”选项卡,即可看到Cowrie蜜罐所产生的数据。您可以根据自己的需求,对数据进行分析和可视化。 总结 本文介绍了如何基于Docker快速搭建Cowrie蜜罐,并通过Elasticsearch和Kibana实现数据可视化。这是一种简单、快速、可扩展的方案,可以帮助安全人员更好地了解攻击者的行为和方法,从而提高安全防护能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值