欢迎光临
我们一直在努力

戏耍SSH暴力破解者:高交互式SSH蜜罐搭建

SSH暴力破解无时不刻都在进行着,现在可以说已经夸张到只要你的22端口不改,每天必定被扫上几次,如果是热门IP段,一天被扫十万次都不算多。

对于搞这些扫描破解SSH的,你是选择“怂”就这样忍着,还是强行“怼”回去呢?多数系统管理员都选择“怂”,一般采取如下措施:

1、修改SSH默认的22端口

2、关闭密码登录采用证书登录。

3、使用第三方的拦截软件,比如:Fail2ban。

那如果我们不想怂着,想来一波绝地反击,强势一波怼回去有没有办法呢?办法总是有的,就看你愿不愿意折腾了~

首先要请出今天的两位主角,一位是cowrie还有一位是kippo-graph,让我先简要介绍一下这两个工具都是干嘛的。

Cowrie:一个用Python写的高交互式SSH蜜罐,可以模拟出一个假的Debian系统,支持一些常用操作命令,并且可以记录登录者的登录时间、登录IP、输入过哪些命令、以及保存用wget命令下载的文件等等功能。你需要知道的是,这个假的Debian是完全隔离且安全的,无论是谁登录进去了,输入什么命令其实都相当于是在“自慰”。

Kippo-graph:前身其实是为Kippo这个交互式SSH蜜罐而开发的数据分析平台,但后来被人移植到了Cowrie上。简单点说Kippo-graph是一个用PHP写的SSH蜜罐数据分析平台,我们可以用LNMP环境搭建它,它可以用更详细的图形化界面来展示出我们的SSH蜜罐中收集到的信息。

那现在就进入今天的正题。我们准备一台CentOS7X64的VPS,使用ROOT用户登录到机器内。

1、首先来安装配置Cowrie。

新建一个用户,并命名为cowrie:

groupadd cowrie
useradd cowrie -g cowrie
passwd cowrie

完成后如图所示:

安装一些依赖和组件:

yum -y install wget git gcc-c++ openssl-devel python-devel python-setuptools

安装virtualenv:

easy_install virtualenv

完成后如图所示:

安装pip:

easy_install pip

完成后如图所示:

使用su切换到cowrie用户,然后进入到这个用户的主目录:

su cowrie
cd /home/cowrie

拉取cowire的项目文件:

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

进入cowrie目录内:

cd cowrie

创建程序运行的虚拟环境:

virtualenv cowrie-env

激活环境:

source cowrie-env/bin/activate

成功后如图所示:

安装cowrie所需的依赖:

pip install --upgrade pip
pip install --upgrade -r requirements.txt

安装成功后如图所示,如果这里有报错,你们就需要根据报错内容来自行解决问题了:

现在复制一份配置文件:

cp cowrie.cfg.dist cowrie.cfg

编辑它:

vi cowrie.cfg

在这个配置文件内,我们更改的内容很多,比如可以更改系统的主机名:

还可以更改这个假Debian系统内的SSH端口号,这里假设我把它修改成51888:

然后为了让这个蜜罐显得更逼真一些,我们更改一下SSH连接信息:

关于这个配置文件,这里LALA暂时就先配置这么多。

接着编辑登录凭证:

vi data/userdb.txt

在这个登录凭证里面,说白了也就是让我们自定义一些SSH账号和密码,“方便”那些爆破的黑阔登录我们的系统:

现在我们就来运行Cowrie:

bin/cowrie start

运行成功后如图所示:

我们可以尝试自己先登录一下这个假的Debian系统,然后输入命令看看是个什么效果:

可以看到上图中,我已经成功登录到这个假的Debian系统内了,并且我输入了一些常用命令都可以回显内容,另外wget也可以下载文件。下载的文件会重命名并保存到/home/cowrie/cowrie/dl/目录下。

其实现在Cowrie就已经搭建完成了,并且Cowrie本身是会把日志记录到log/cowrie.log这个文件内的。

我们浏览一下这个文件,可以看到刚才我在SSH蜜罐中输入的内容都显示在这里了:

但是,这种无序、无格式的日志文件,如果登陆者多了,日志越来越大,我们分析起来是不是就特别累?别说分析了,看着头都是晕的,所以接下来我们就需要搭建Kippo-Graph这个日志分析工具来帮助我们整理日志内容。而又因为Kippo-Graph是基于PHP的,所以我们可以把Cowrie的日志内容保存到MySQL数据库中,这样一来,查看和分析日志就会变的轻松很多~

2、搭建Kippo-Graph日志分析平台。

以下搭建LNMP环境的过程,总体步骤来自于:CentOS7手动安装Nginx/MySQL/PHP/phpMyAdmin但有很多地方需要做修改,请各位看官仔细看完。

先su拿回root权限,然后进入到root目录内:

su
cd /root

安装Nginx:

vi /etc/yum.repos.d/nginx.repo

写入如下内容:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

用yum安装nginx:

yum -y install nginx

安装MySQL5.7:

vi /etc/yum.repos.d/mysql-community.repo

写入如下内容:

[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

使用yum安装mysql:

yum -y install mysql-community-server

启动MySQL:

systemctl start mysqld

获取初始的root密码:

grep 'temporary password' /var/log/mysqld.log

修改掉root密码:

mysqladmin -u root -p password

编辑MySQL的主配置文件:

vi /etc/my.cnf

加入一段:

sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

如图所示:

最后重启MySQL:

systemctl restart mysqld

安装python-MySQL模块所需依赖:

yum -y install mysql-devel

进入到cowrie目录内:

cd /home/cowrie/cowrie

使用pip安装mysql-python:

pip install mysql-python

安装成功后如图所示:

现在来安装PHP7.2.2,首先安装EPEL和Webtatic源:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

编辑这个EPEL源配置文件:

vi /etc/yum.repos.d/epel.repo

去掉如图所示的#号:

安装PHP:

yum -y install php72w-fpm php72w-cli php72w-common php72w-gd php72w-mysqlnd php72w-odbc php72w-pdo php72w-pgsql php72w-xmlrpc php72w-xml php72w-mbstring php72w-opcache

修改php.ini配置文件(配置请参考:https://lala.im/2571.html):

/etc/php.ini

新建session目录并给777权限:

mkdir /var/lib/php/session
cd /var/lib/php
chmod -R 777 session

接着编辑php-fpm的www.conf文件:

vi /etc/php-fpm.d/www.conf

将php-fpm的运行用户修改成cowrie,如图所示:

安装unzip:

yum -y install unzip

进入到nginx站点目录:

cd /usr/share/nginx/

下载并解压phpMyAdmin:

wget https://files.phpmyadmin.net/phpMyAdmin/4.7.9/phpMyAdmin-4.7.9-all-languages.zip
unzip phpMyAdmin-4.7.9-all-languages
mv phpMyAdmin-4.7.9-all-languages phpmyadmin
rm -rf phpMyAdmin-4.7.9-all-languages.zip

新建一个phpmyadmin的conf:

vi /etc/nginx/conf.d/phpmyadmin.conf

写入如下内容:

server {
    listen       2333;
    server_name  172.104.127.205;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/phpmyadmin;
        index  index.html index.htm index.php;
    }

    location ~ .php$ {
        root           /usr/share/nginx/phpmyadmin;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/phpmyadmin$fastcgi_script_name;
        include        fastcgi_params;
    }

}

现在启动Nginx和PHP-FPM:

systemctl start nginx
systemctl start php-fpm

打开phpMyAdmin新建一个数据库并命名为cowrie,然后导入数据库文件:

/doc/sql/mysql.sql

这个数据库文件的下载地址:https://github.com/micheloosterhof/cowrie/

如图:

回到Xshell内,现在拉取kippo-graph的项目文件:

git clone https://github.com/ikoniaris/kippo-graph.git

重命名一下,然后进入到kippo目录内:

mv kippo-graph kippo
cd kippo

给generated-graphs目录777权限:

chmod 777 generated-graphs

复制一份配置文件:

cp config.php.dist config.php

编辑它:

vi config.php

修改数据库连接信息:

使用su切换到cowrie用户:

su cowrie

进入到cowrie的根目录:

cd /home/cowrie/cowrie

编辑配置文件:

vi cowrie.cfg

同样这里也要修改数据库连接信息:

先停止运行cowrie,接着再启动:

bin/cowrie stop
bin/cowrie start

再用su切回root权限:

su

由于Kippo-graph没有登录机制,所以任何人都能访问到WEB页面。为了让我们的SSH蜜罐信息只为自己所用,这里LALA就配置一下Nginx的密码访问功能。

首先打开:http://tool.oschina.net/htpasswd

用这个工具在线生成一个htpasswd的密匙对,复制生成结果,如图所示:

回到Xshell中新建一个htpasswd文件:

vi /etc/nginx/htpasswd

粘贴密匙对的内容,如图:

接着新建一个kippo的conf:

vi /etc/nginx/conf.d/kippo.conf

写入如下内容:

server {
    listen       80;
    server_name  172.104.127.205;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        auth_basic "Auth";
        auth_basic_user_file htpasswd;
        root   /usr/share/nginx/kippo;
        index  index.html index.htm index.php;
    }

    location ~ .php$ {
        auth_basic "Auth";
        auth_basic_user_file htpasswd;
        root           /usr/share/nginx/kippo;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/kippo$fastcgi_script_name;
        include        fastcgi_params;
    }

}

重启Nginx:

systemctl restart nginx

至此,我们的SSH蜜罐和数据分析平台就都搭建完成了,但是我们的SSH蜜罐端口当前运行在51888上面,黑阔怎么可能会爆破这个高位端口呢?所以我们需要将22端口的流量转发到我们的51888端口,让黑阔能够轻松的扫描到端口并且登录进系统~

但是22端口现在正是我们的真SSH端口,如果直接做转发,岂不是让我们自己都登录不了系统了,所以我们要先把自己的真SSH端口修改一下~

编辑我们的真SSH配置文件:

vi /etc/ssh/sshd_config

把我们的真SSH端口修改一下,这里我修改成35826,如图所示:

重启SSH服务:

systemctl restart sshd.service

开启CentOS7的防火墙:

systemctl start firewalld.service
systemctl enable firewalld.service

放行80端口:

firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=80/udp

放行3306端口:

firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public --add-port=3306/udp

放行phpMyAdmin的端口:

firewall-cmd --permanent --zone=public --add-port=2333/tcp
firewall-cmd --permanent --zone=public --add-port=2333/udp

放行22端口以及真、假SSH端口:

firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=51888/tcp
firewall-cmd --permanent --zone=public --add-port=35826/tcp

做端口转发,将22端口的流量转发到我们的SSH蜜罐端口:

firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toport=51888

重载防火墙,让设置生效:

firewall-cmd --reload

完成后如图所示:

至此,一个高交互式的SSH蜜罐搭建就大功告成了~

但是由于Kippo-Graph年久失修,有一部分功能并不能和Cowrie完美结合使用,比如Kippo-Graph的“日志重放”功能现在应该是不能正常使用的。

下面LALA找到一个不完美修复Kippo-Graph的日志重放功能,虽说这样改了后还是有一点问题,但是好歹部分日志是能够播放出来的。

首先编辑:

vi /usr/share/nginx/kippo/kippo-play.php

将路径修改为:

/home/cowrie/cowrie/bin/playlog

如图所示:

接着编辑:

vi /usr/share/nginx/kippo/config.php

修改如图红框中的两个部分:

接着把这个配置文件的最下面改成如图所示:

现在让我们一起看看SSH蜜罐都收获了哪些信息吧~

一些有趣的命令:

日志重放:

登录成功或者尝试登录过此SSH蜜罐的IP:

最“猛”的前十位爆破者IP:

一些统计图表:

最后,如何使用收集到的信息进行一波反杀呢?

举个例子:

前两天有一个这样的黑阔,登录进去输了这样一条wget命令:

完整的命令如下:

下的这个文件是干啥的,这里不得而知,反正估计不是DDOS就是挖矿的玩意,但是这些都不重要,重要的是有他的服务器IP。

首先在ipip.net查一下归属地:

嗯,不错,globalfrag家的机器,这家有中国销售,直接官网联系QQ:

加好友,说明一下:

一般的机房在收到此类abuse都会积极的处理的,除非是部分支持扫爆的机房。

另外得饶人处且饶人,我只是截了个图,并没有真正加这个客服好友。。。扫爆其实也是个辛苦活。。。如果你的机器因为SSH密码设置的太弱被人弄进去了,也算是给自己一个教训。

赞(0)
未经允许不得转载:拆东墙 » 戏耍SSH暴力破解者:高交互式SSH蜜罐搭建

评论 抢沙发

登录

找回密码

注册