目录
扫描技术
为什么学习这门课程
在渗透测试过程中,为了节省人力和时间,通常采用手工和工具结合的方式,使用工具,就是将一些机械性的操作自动化实现,用来提高渗透测试的效率。例如,寻找内网网段(10.10.10.20/24)所有在线主机,如果一个个去Ping,测试主机是否存活,显然是不合适的。
主机嗅探与端口扫描
主机嗅探是指确定目标主机是否存活。
端口扫描就是寻找在线主机所开发的端口,并且在端口上所运行的服务,设置可以进一步确定目标主机操作系统类型和更详细的信息。
基础知识
常见端口号
20/21 | FTP | 443 | HTTPS |
22 | SSH | 1433 | SQL Server |
23 | Telnet | 1521 | Oracle |
25 | SMTP 邮件发送协议 | 3306 | MySQL |
80 | HTTP | 3389 | RDP |
445 | SMB |
Nmap-扫描器之王
nmap被誉为“扫描器之王”,nmap为开源工具,并且是跨平台的。官方网站(https://nmap.org)
我们可以使用kali虚拟机中自带的nmap
-sP(注意大小写) |
Ping 扫描【扫描主机是否在线】通过ping的方式扫描一个IP地址是否存在 |
-p |
指定端口或端口范围 |
-sT | TCP连接扫描 |
-sS | TCP SYN扫描 |
-sU | UDP扫描 |
-sV |
服务版本探测 |
-O(大写) |
启用操作系统探测 |
-A |
全面扫描 |
-oN |
把扫描出来的结果保存为txt【生成报告】 |
-oA | 保存到所有格式(o:output) |
Nmap -sP 10.1.1.1/24 扫描10.1.1.0整个网段(最后面的1其实无效)
nmap -sP 10.1.1.2-100
Nmap -p 21,23 10.1.1.1 Nmap扫描10.1.1.1,且只扫描21,23这两个端口号是否开启(p=port)【扫描这个地址指定的若干个端口】
Nmap -p 21,23-25,3389 10.1.1.1【23-25表示一个范围】
nmap -p 21,23 192.168.3.1/24 查看一个网段开发的某个端口
Nmap -p 21,23 10.1.1.1 -sV 扫描21,23的服务版本(V=version),不是系统版本
Nmap -A 10.1.1.1 全面扫描
Nmap -O 10.1.1.1 扫描目标系统版本(还可以查看目标系统开放哪些端口号),不是服务版本
Namp -p 21,23 10.1.1.1 -oN e:\result.txt(生成报告)
Namp -O 10.1.1.1 -oN d:\report.txtnmap 10.1.1.2 连ping它并检查它所有开放端口
TCP连接扫描 nmap -sT 192.168.1.148 -p 3389(-sT是尝试完成一个完整的三次握手)
可以使用wireshark进行抓包分析,端口开放放情况【nmap -sT 192.168.1.148 -p 3389】(TCP三次握手)
RST是强制断开TCP SYN扫描 nmap -sS 192.168.1.148 -p 3389(-sS是扫描)
nmap 192.168.1.148 -p 3389 -O 扫描目标主机版本
nmap 12.168.1.159 -p 21 -sV 探测服务版本
保存扫描报告:
-oN 保存成txt纯文本格式
nmap -sT 127.0.0.1 -sV -oN result.txt(-o是输出 -O是查看系统版本)
-oX 保存为xml格式
nmap -sT 127.0.0.1 -p 22 -sV -oX result.xml
口令破解
概述
现在很多地方都以用户名(账号)和口令(密码)作为鉴权的方式,口令(密码)就意味着访问权限。口令(密码)就相当于进入家门的钥匙,当他人有一把可以进入你家门的钥匙,你的安全、财务、隐私就受到了威胁,例如网站后台、数据库、服务器、个人电脑、QQ、邮箱等等
口令安全现状
@弱口令
类似于123456、654321、admin123等这样常见的弱密码
@默认口令
很多应用或者系统都存在默认弱口令。比如phpstudy的mysql数据库默认账号密码[root/root],Tomcat管理看控制台账号密码[tomcat/tomcat]等
@明文传输
比如http、ftp、telnet等服务,在网络中传输的数据流都是明文的,包括口令认证信息等,这样的范围,就有被嗅探的风险
破解方式
@ 暴力破解
暴力破解就是利用可能的字符组成密码,去尝试破破解,这是最原始,粗暴的破解方法,根据运算能力,如果能承受的起时间成本的话,最终一定会爆破出密码。下表示不同字符集合不同位数密码的数量。
字符集 | 密码位数 | 密码空间 |
[0-9] | 8位 | 10^8=100000000 |
[0-9][a-z] | 8位 | 36^8=2821109907456 |
[0-9][a-z] | 1-8位 | ?? |
下面为用真空密码字典生成器(WIN10用不了),生成的1到8位数小写字母和数字字典,约占用空间
@ 字典破解
如果能通过比较合理的条件,筛选或者过滤掉一些全字符的组合的内容,就会大幅度减低爆破的成本,我们把筛选出的密码组合成特定的字典。在用字典爆破密码也是可以的,但是这样做可能会漏掉真正的密码。密码字典大致分为以下几类:
弱口令字典
比如123456,admin这样的默认口令或者弱口令
社工字典
人们在设置密码的时候,为了便于记忆,密码的内容和组合会与个人信息有关,比如常见的密码组合“名字+生日”。社工字典更具有针对性,准确率也比较高。
windows口令暴力破解
- windows口令远程爆破
我们可以通过NTscan(只针对445做暴力破解)工具远程爆破windows口令
工具 | NTscan |
使用场景 | 本地网络(局域网) |
支持模式 | 139/445 支持IPC/SMB/WMI三种扫描模式 |
字典文件 | NT_user.dic / NT_pass.dic |
如何防止NTscan扫描?
secpol.msc
本地策略---》安全选项---》网络访问:本地账户的 共享和安全模式属性---》仅来宾模式
- windows账户本地hash值破解
除了可以从远程爆破windows密码,我们还可以在本地破解windows密码。本地windows账户破解主要有两种方式
@从内存中读取windows密码
我们可以用getpass直接从windows系统中读取账户密码(win2003有漏洞)
详细看https://blog.csdn.net/Waffle666/article/details/113242950
成功率取决于密码字典
linux口令破解
linux口令破解,也分远程破解与本地破解,远程破解主要是爆破ssh服务,属于在线密码攻击。
本地破解需要拿到linux的shadow文件,进行hash值破解,属于离线密码攻击。
破解SSH服务(22端口号)
我们使用hydra攻击破解ssh服务,hydra攻击以及自动集成在kali虚拟机中,命令如下:
hydra -l root -P /root/dic/test_pwd.dic 10.10.20.79 ssh -vV
-l表示login,登录用户名,后面写以什么身份去连
-P后面写密码字典路径
本地shadow文件破解
我们可以使用john工具,破解shadow密码文件
john有windows版和linux版。john也是自动集成在kali中。john破解的时候也需要准备一个字典
john的具体命令如下
john --wordlist=/root/dic/test_pwd.dic /etc/shadow
john --show /etc/shadow
网络服务口令破解
- 破解MSSQL口令
本实验需要搭建一个SQL server2000服务器管理器,开启后在kali虚拟机中输入一下命令:
hydra -l -sa -P /root/dic/test_pwd.dic 10.10.20.87 mssql -vV
- 破解RDP口令
@开启RDP服务(3389)
右键计算机---》属性---》远程设置---》远程---》勾选运行任意版本远程桌面的计算机连接
@打开kali虚拟机输入以下命令,进行爆破
hydra -l administrator -P /root/dic/test_pwd.dic 10.10.20.75 rdp -vV(用最新版的kali做)
- 破解FTP口令
打开kali输入以下命令:
hydra -L /root/dic/test_user.dic -P /root/dic/test_pwd.dic 10.10.20.81 ftp -vV
进行爆破ftp服务器
- 破解445口令
hydra -l administrator -P /root/pass.dic 10.1.1.2 smb -vV(V是显示详细信息以及破解的整个过程)
- 破解Telnet口令
hydra -l administrator -P /root/pass.dic 10.1.1.2 telnet -vV
实验:
vim pass.dic(里面随便写几个密码)
root@kali:~# hydra -l adminisrator -P /root/pass.dic 10.1.1.2 ftp -vV
在线密码查看网站
在线密码查询网站主要是查询md5 hash值的,这样的网站有:
www.cmd5.com
pmd5.com