架构师的成长之路初片~kill扫描

云盘链接:https://pan.baidu.com/s/1W0T0PNC7t4s23xGa_7MbMg 提取码:lyoe
 
1)基本用法
基本用法:
# nmap [扫描类型] [选项] <扫描目标 ...>
#常用的扫描类型
# -sS,TCP SYN扫描(半开)
# -sT,TCP 连接扫描(全开)
# -sU,UDP扫描
# -sP,ICMP扫描
# -A,目标系统全面分析
 
2)检查192.168.4.11主机是否可以ping通
[root@prometheus ~]# yum -y install nmap //(如果没有nmap工具,可以安装)
[root@prometheus ~]# nmap -sP 192.168.4.11
[root@prometheus ~]# nmap -sP -n 192.168.4.11
(-n 无需进行DNS解析)
 
3)检查192.168.4.0/24网段内哪些主机可以ping通
[root@prometheus ~]# nmap -sP -n 192.168.4.0/24
 
4)检查目标主机所开启的TCP服务(如果不指定端口,将扫描所有端口)
[root@prometheus ~]# nmap -sT -n 192.168.4.11
[root@prometheus ~]# nmap -sT -n 192.168.4.0/25
 
5)检查192.168.4.0/24网段内哪些主机开启了FTP、SSH服务(-p 指定端口)
[root@prometheus ~]# nmap -sT -n -p 21-22 192.168.4.11
....
PORT STATE SERVICE
21/tcp closed ftp
22/tcp open ssh
[root@prometheus ~]# nmap -sT -n -p 80 192.168.4.11
[root@prometheus ~]# nmap -sT -n -p 21,22,80,3306 192.168.4.11
[root@prometheus ~]# nmap -n -p 80 192.168.4.11
(默认使用的扫描类型为-sT)
 
 
 
6)检查目标主机所开启的UDP服务
[root@prometheus ~]# nmap -sU 192.168.4.11 //指定-sU扫描UDP(花费时间较长)
[root@prometheus ~]# nmap -sU -n -p 80 192.168.4.11
 
7)全面分析目标主机192.168.4.11和192.168.4.10的操作系统信息
[root@prometheus ~]# nmap -A -n 192.168.4.11
[root@prometheus ~]# nmap -A -n 192.168.4.11,10
 
二:使用nmap执行脚本扫描
nmap提功了强大的脚本引擎NSE,增强nmap的扫描能力。
相关脚本存放目录:/usr/share/nmap/scripts/
 
1)准备一台Vsftpd服务器(192.168.4.11主机操作)
[root@node1 ~]# yum -y install vsftpd
[root@node1 ~]# systemctl restart vsftpd
[root@node1 ~]# useradd tom
[root@node1 ~]# echo 123 | passwd --stdin tom
 
2)FTP相关扫描脚本
#匿名访问扫描
[root@prometheus ~]# nmap --script=ftp-anon.nse 192.168.4.11 -p 21
[root@prometheus ~]# nmap --script-help=ftp-anon.nse //查看脚本的帮助信息
 
#扫描ftp软件相关信息(如版本号,是否有带宽限制,超时时间等)
[root@localhost scripts]# nmap --script=ftp-syst.nse 192.168.4.11 -p 21
......
No Session bandwidth limit
[root@localhost scripts]# echo "anon_max_rate=500000" >> /etc/vsftpd/vsftpd.conf //带宽限制
[root@localhost scripts]# systemctl restart vsftpd
[root@localhost scripts]# nmap --script=ftp-syst.nse 192.168.4.11 -p 21 //(此次输出内容是有贷款限速的提示。)
 
 
#后门扫描
[root@localhost scripts]#nmap --script=ftp-vsftpd-backdoor.nse 172.40.50.120 -p 21
 
#暴力破解密码
[root@prometheus ~]# cat /tmp/user.list
haha
xixi
lele
lihan
tom
luofei
[root@prometheus ~]# cat /tmp/pass.list
123456
qwert
asdf
zxcv
123
[root@prometheus ~]# nmap --script=ftp-brute.nse --script-args userdb=/tmp/user.list,passdb=/tmp/pass.list 192.168.4.11 -p 21
 
3)SSH相关扫描(在kali主机操作)
$ cat /tmp/a
aa
haha
$ cat /tmp/b
123
456
$nmap --script=ssh-brute.nse --script-args userdb=/tmp/a,passdb=/tmp/b 192.168.4.11 -p 22
 
[目标主机]# tail /var/log/secure #查看日志
 
 
4)HTTP相关扫描(kali主机操作)4.11主机中要使用httpd网站服务。
#请求方法扫描(如get,post,header等)
[root@prometheus ~]# nmap -n --script=http-methods.nse 192.168.4.11 -p 80
 
SQL注入是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
 
 
6)暴力破解密码(kali主机操作)

KVM的同学,给Kali主机配置好IP(192.168.4.40),并且修改配置文件,即可实现从真机远程连接Kali主机。
$ sudo echo 'PermitRootLogin yes'  >> /etc/ssh/sshd_config  //允许密码登录
$ sudo echo 'PasswordAuthentication yes'  >> /etc/ssh/sshd_config  //允许密码认证登录
$ sudo   /etc/init.d/ssh  restart
[root@localhost ~]# ssh  kali@192.168.4.40

 

_____解傻瓜式密码________
$ sudo john --single /etc/shadow       // #破解傻瓜式密码
[sudo] kali 的密码:    //输入kali用户的密码(kali)

$ sudo john --show  /etc/shadow        //#显示破解的密码
kali:kali:18597:0:99999:7:::
———字典暴力破解———
$ sudo john   /etc/shadow       字典暴力破解(随时ctrl+c终止)

$ sudo john --show  /etc/shadow             //#显示破解的密码
kali:kali:18597:0:99999:7:::       
————自定义密码本破解——————

$ sudo useradd haha     
$ sudo passwd haha
$ cat /tmp/pass.txt           //自己编写密码本
123
456
asv
haha
kali 
$ sudo john --wordlist=/tmp/pass.txt /etc/shadow   //#使用自定义密码本破解
$ sudo john --show  /etc/shadow       //#显示破解的密码

  

 

三、tcpdump分析
 
[root@prometheus ~]#yum -y install tcpdump
-i,指定监控的网络接口(默认监听第一个网卡)
-A,转换为 ACSII 码,以方便阅读
[root@prometheus ~]# tcpdump -i ens160 -A //抓取en160网卡的数据包(不想抓取可以按ctrl+c结束。)
 
-w,将数据包信息保存到指定文件
-r,从指定文件读取数据包信息
[root@prometheus ~]# tcpdump -i ens160 -A
[root@prometheus ~]# tcpdump -A -r a.txt
使用tcpdump分析FTP访问中的明文交换信息
prometheus主机:192.168.4.10
node1主机:192.168.4.11
 
[root@node1 ~]# yum -y install vsftpd
[root@node1 ~]# systemctl restart vsftpd
(要确保node1主机上的防火墙是关闭的。)
[root@node1 ~]# useradd tom
[root@node1 ~]# echo 123 | passwd --stdin tom
 
[root@prometheus ~]# tcpdump -i ens160 -A host 192.168.4.11 and tcp port 21
另开一个终端
[root@prometheus ~]# ftp 192.168.4.11 //模拟客户端进行登录,输入用户名和密码。
[root@prometheus ~]# tcpdump -A -r a.cap | grep -E 'USER|PASS'
 
 
Wireshark:是一个网络包分析软件。(带有图形)
 
二、优化Nginx服务的安全配置
1) 修改版本信息,并隐藏具体的版本号
默认Nginx会显示版本信息以及具体的版本号,这些信息给攻击者带来了便利性,便于他们找到具体版本的漏洞。(浏览器中按F12,可以进入开发者模式。点击网络,访问网址,可以看到请求的内容。)
如果需要屏蔽版本号信息,执行如下操作,可以隐藏版本号。
0
 
搭建好Nginx服务,并启动:
[root@node1 ~]# vim /usr/local/nginx/conf/nginx.conf
… …
http{
     server_tokens off;           #在http下面手动添加这么一行
     … …
}
[root@node1 ~]# /usr/local/nginx/sbin/nginx -s reload
[root@node1 ~]# echo  123 >  /usr/local/nginx/html/index.html
[root@prometheus ~]# curl -I http://192.168.4.11   #查看服务器响应的头部信息

  

2) 限制并发量
DDOS攻击者会发送大量的并发连接,占用服务器资源(包括连接数、带宽等),这样会导致正常用户处于等待或无法访问服务器的状态。
Nginx提供了一个ngx_http_limit_req_module模块(该模块默认已经安装),可以有效降低DDOS攻击的风险,操作方法如下:
 
[root@node1 ~]# vim /usr/local/nginx/conf/nginx.conf
… …
http{
… …
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    server {
        listen 80;
        server_name localhost;
        limit_req zone=one burst=5;
            }
}
#备注说明:
#limit_req_zone语法格式如下:
#limit_req_zone key zone=name:size rate=rate;
#上面案例中是将客户端IP信息存储名称为one的共享内存,内存空间为10M
#1M可以存储8千个IP信息,10M可以存储8万个主机连接的状态,容量可以根据需要任意调整
#每秒中仅接受1个请求,多余的放入漏斗
#漏斗超过5个则报错
[root@node1 ~]# /usr/local/nginx/sbin/nginx -s reload
客户端使用ab测试软件测试效果:
[root@prometheus ~]# ab -c 100 -n 100  http://192.168.4.5/

  

0
3) 拒绝非法的请求
[root@prometheus ~]# curl  http://192.168.4.11         //不加任何选项,看到的是网页内容
[root@prometheus ~]# curl -I  http://192.168.4.11      //-I 看数据包的头部信息
[root@prometheus ~]# curl -i  http://192.168.4.11      //既有数据包的头部信息又有网页的内容。

[root@prometheus ~]# curl -i -X HEAD  http://192.168.4.11    //只有数据包的头部信息(HEAD请求)
[root@prometheus ~]# curl -i -X GET  http://192.168.4.11 //既有数据包的头部信息又有网页的内容(GET请求)

 

通过如下设置可以让Nginx拒绝非法的请求方法:
[root@node1 ~]# vim /usr/local/nginx/conf/nginx.conf
http{
       server {
                 listen 80;
#这里,!符号表示对正则取反,~符号是正则匹配符号
#如果用户使用非GET或POST方法访问网站,则retrun返回错误信息
              if ($request_method !~ ^(GET|POST)$ ) {
                     return 444;
               }    
        }
}
[root@node1 ~]# /usr/local/nginx/sbin/nginx -s reload

  

测试
[root@prometheus ~]# curl -i -X GET  http://192.168.4.11    //正常
[root@prometheus ~]# curl -i -X HEAD  http://192.168.4.11   //失败

  

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2021-03-28 13:40  樱花泪  阅读(111)  评论(0编辑  收藏  举报