渗透测试——一、黑客实践之网络扫描

渗透测试

一、该文章简介

网络扫描时黑客攻击钟信息收集的有效手段,通过扫描可以了解网络中主机的相关情况,为下一步渗透做准备。同时,扫描需要借助工具,本篇介绍Kali Linux中的Nmap工具,通过该工具的使用,设置一定的参数,得到网络主机的操作系统、端口状态、服务版本漏洞等信息。

1、目标

技能目标:

  • 1、熟悉Kali Linux系统并能使用Kali中的一些工具,如Nikto、Crunch等
  • 2、了解Kali Linux中Nmap扫描时用到一些参数的功能,如-A,-O等
  • 3、熟悉Nmap扫描后反馈信息的含义

知识目标:

  • 1、理解Kali Linux系统在黑客实践中的作用
  • 2、掌握Kali Linux中一些基本工具的使用
  • 3、掌握用Nmap配合相关参数扫描网络的流程

2、任务

  • 1、认识Kali Linux
  • 2、Nmap主机发现和服务扫描
  • 3、Nmap漏洞发现与渗透

二、认识Kali Linux

Kali Linux是黑客攻击的常用工具,集成了Nmap、Dmitry、Nikto等网络扫描工具,Crunch、John等密码生成和破解工具,Burp、Wireshark等抓包工具,同时有基于Metasploit框架的渗透模块等。

1、知识准备

1.1 Linux操作系统

Linux是一套免费使用和自由传播的类UNIX操作系统,是一个基于UNIX的多用户、多任务、支持多线程和多CPU的操作系统。并能运行主要的UNIX工具软件、应用程序和网络协议。同时支持32位和64位硬件。Linux继承了UNIX以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux与其他操作系统相比,具有开放源码、没有版权、技术社区用户多等特点。开放源码使得用户可以自由裁剪、灵活性高,功能强大、成本低。尤其是系统中内嵌网络协议栈,经过适当的配置就可以实现路由器的功能。这些特点使得Linux成为路由交换设备的理想开发平台。
Linux发行版本以及特点

版本名称 网址 特点 软件包管理器
Debian Linux www.debian.org 开放的开发模式,并易于进行软件包升级 apt
Fedora Core www.redhat.com 拥有数量庞大的用户、优秀的社区技术支持、并有很多创新 yum(rpm) up2date(rpm)
CentOS www.centos.org CentOS是一种对RHEL源码再编译的产物 rpm
SUSE Linux www.suse.com 专业的操作系统,易用的YaST软件包管理系统 YaST(rpm)
Mandriva www.mandriva.com 操作界面友好,使用图形配置工具,支持NTFS分区的大小变更 rpm
KNOPPIX www.knoppix.com 可以在CD上运行,具有优秀的硬件检测和适配能力,可作为系统的急救盘使用 apt
Gentoo Linux www.gentoo.org 高度的可定制性,使用手册完整 portage
Ubuntu www,.ubuntu.com 优秀的桌面环境 apt

1.2 Kali Linux系统

Kali Linux是一个基于Debian的Linux发行版,包括很多安全和取证方面的相关工具。其有32位和64位得镜像下载地址,可用于x86指令集。同时,它还有基于ARM架构得镜像,可用于树莓派和三星得ARM Chromebook。用户可以通过硬盘、Live CD或Live USB来运行Kali Linux操作系统。

Kali Linux下载地址为:https://www.kali.org/downloads/

Kali Linux预装了许多渗透测试软件,包括Nmap、Wireshark、John the Ripper,以及Aircrack - ng。Kali-Linux有着永远开源免费、支持多张无线网卡、定制内核、支持无线注入、支持手机/PAD/ARM平台、高度可定制及更新频繁等特点,是渗透测试者、安全研究者、电子取证者、逆向工程者及黑客常用的工具。

1.3 常用网络服务端口

网络协议是指一些在网络上运行的、面向服务的、基于分布式程序的软件模块。TCP协议、UDP协议是现实通信中的重要协议、它们为这些软件模块提供了通信端口。

(1)TCP端口

TCP端口,即传输控制协议端口,需要在客户端和服务器之间建立连接,这样能提供可靠的数据传输。常用的包括FTP服务的21端口、Telnet服务的23端口、SMTP服务的25端口及HTTP服务的80端口等等。

(2)UDP端口

UDP端口,即用户数据包协议端口,无须在客户端和服务器之间建立连接,安全性得不到保障,常见的有DNS服务的53端口、SNMP(简单网络管理协议)服务的161端口,QQ使用的8000和4000端口等等。

端口 服务 说明
21 FTP FTP服务所开放的端口,用于上传、下载文件
22 SSH 用于通过命令行模式或远程连接软件连接Linux实例
23 Telnet 用于Telnet远程登录ECS实例
25 SMTP SMTP服务所开放的端口,用于发送邮件
80 HTTP 用于HTTP服务提供访问功能,例如Apache,Nginx等服务
110 POP3 用于POP3协议,POP3是电子邮件收发的协议
143 IMAP 用于电子邮件接收的协议
443 HTTPS 用于HTTPS服务提供访问功能。是一种能提供加密和通过安全端口传输的协议
1433 SQL Server SQL Server的TCP端口,用于供对外提供服务
1434 SQL Server SQL Server的UDP端口,用于返回使用了哪个TCP/IP端口
1521 Oracle 通信端口
3389 Windows Server Remote Desktop Services 远程桌面服务端口,可以通过这个端口使用软件连接windows实例
8080 代理端口 同80端口一样,8080端口常用于WWW代理服务,实现网页浏览,如果使用8080端口,访问网站或使用代理服务器时,需要在IP地址后面加上8080,安装Apache Tomcat服务后,默认服务端口为8080
137 138 139 NetBIOS协议137,138为UDP端口,通过网上邻居传输文件时使用的端口,通过139这个端口库进入的连接视图获得NetBIIOS/SMB服务,NetBIOS协议常被用于Windows文件、打印机共享和Samba

2、利用Dmitry进行端口扫描

Dmitry是Kali Linux中的信息收集工具。在Kali终端输入dmitry,回车即可:

  • -o,把扫描结果保存为一个文件。
  • -i,扫面的IP地址
  • -n,获取相关主机的netcraft.com信息,包括主机操作系统、Web服务上线和运行时间信息
  • -p,在目标主机上执行TCP端口扫描,这是个相对简单的模块
  • -f,让TCP扫描器输出过滤的端口信息
  • -t,设置端口扫描的TTL,默认是2s。

在dmitry后加上参数-p,扫描百度网站开放的端口,结果显示百度服务器开放了80端口:

3、利用Nikto扫描网页漏洞

Nikto是一款使用Perl语言开发的开源代码的、功能强大的Web扫描评估软件,能对Web服务器多种安全项目进行测试,在Kali Linux终端输入nikto -H,回车即可:

参数说明:

  • -Cgidirs,扫描CGI目录
  • -config,使用指定的config文件来替代安装在本地的config.txt文件
  • dbcheck,选择语法错误的扫描数据库
  • -evasion,使用LibWhisker中对IDS的躲避技术
  • -findonly,仅用来发现HTTP和HTTPS端口,而不执行检测规则
  • -Format,指定检测报告输出文件的格式,默认是txt文件格式(csv/txt/htm)
  • -host,目标主机,包括主机名,IP地址,主机列表文件
  • -id,ID和密码对于授权的HTTP认证
  • -nolookup,不执行主机名查找
  • -output,报告输出指定地点
  • -port,扫描端口指定,默认为80端口
  • -Pause,每次操作之间的延迟时间
  • Display,控制Nikto输出的显示
  • ssl,强制在端口上使用SSL模式
  • -Single,执行单个对目标服务的请求操作
  • -timeout,每个请求的超过时间,默认为10s
  • -Tuning,控制Nikto使用不同的方式来扫描目标
  • -useproxy,使用执行代理扫描
  • -update,更新插件和数据库

在nikto后加上参数-host扫描项目网站,结果如图,带+号的是网站的敏感信息:

4、利用Crunch生成密码字典

网站入侵靠的是数据字典,Crunch是Kali Linux中的字典生成工具,在Kali Linux终端输入crunch,回车:

输入man crunch即可查看手册:

crunch参数说明:

  • -c,数字,指定写入输出文件的行数,也即包含密码的个数
  • -d,数字符号,限制出现相同元素的个数,"-d 2@"限制小写字母输出,比如aab,aac,不会产生aaa,因为这是连续的三个字母。格式为+符号,数字是连续字母出现的次数,符号是限制字符串的字符。
  • -e,字符串,定义停止生成密码,比如-e 222222,到222222停止生成密码。
  • -f /path/to/charset - name,从charset.lst指定字符集,也即调用密码库文件。
  • -i,改变格式
  • -o wordlist.txt,执行输出文件的名称
  • -p,字符串或者-p 单词1 单词2,以排列组合方式来生成字典。
  • -q filename.txt,读取这个文件



在crunch后加上参数6 6 01234567890 - o mum6.dic,生成6位的数字密码,并保存在mum6.dic中:

三、Nmap主机发现和服务扫描

1、知识准备

1.1 Nmap介绍

Nmap是一个网络连接端扫描软件,用来扫描网络中主机开放的连接端口,确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统,它是网络管理员必用的软件之一,还用于评估网络系统安全。
Nmap命令的格式为:

Nmap [扫描类型][通用选项]{扫描目标说明}

1.2 Nmap扫描参数

下面哦我们对nmap命令的参数进行说明:

(1)扫描类型

参数 说明
-sT TCP connect()扫描,这是最基本的TCP扫描方式,这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求及错误信息
-sS TCP同步扫描(TCP SYN),因为不必全部打开一个TCP连接,所以该技术通常称为半开扫描(half-open),该技术最大的好处是很少有系统能够把这计入系统日志,不过,需要root权限来定制SYN数据包
-sF -sX -sN 秘密FIN数据包扫描、圣诞树、空扫描模式,这些扫描方式的理论依据是:关闭端口需要对你的探测包回应RST包,而打开的端口必须忽略有问题的包
-sP ping扫描,用ping方式检查网络上哪些主机正在运行,当主机阻塞ICMP echo请求包时,ping扫描是无效的。Nmap在任何情况下都会进行ping扫描,只有目标主机处在运行状态时,才会进行后续的扫描。
-sU 如果想知道在某台主机上提供哪些UDP服务,可以使用此选项
-sA ACK扫描,这项高级的扫描方法通常可以用来穿过防火墙
-sW 滑动窗口扫描,类似于ACK扫描
-sR RPC扫描,和其他不同的端口扫描方法结合使用
-b FTP反弹攻击,连接到防火墙后面的一台FTP服务器做代理,接着进行端口扫描

(2)通用选项

参数 说明
-P0 在扫描之前,不ping主机
-PT 在扫描之前,使用TCP ping确定哪些主机正在运行
-PS 对于root用户,这个选项让Nmap使用SYN包而不是ACK包来对目标主机进行扫描
-PI 设置这个选项,让Nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行
-PB 这是默认的ping扫描选项,它使用ACK(-PT)和ICMP(-PI)两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法就能够穿过防火墙
-O 这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志,也就是操作系统类型
-I 打开Nmap的反向标志扫描功能
-f 使用碎片IP数据包发送SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度,使其无法知道你的意图
-v 冗余模式,强烈推荐使用这个选项,它会给扫描过程中的详细信息
-S<IP> 在一些情况下,Nmap可能无法确定你的源地址(Nmap会告诉你),这时使用这个选项给出的IP地址
-g port 设置扫描的源端口。一些天真的防火墙和包过滤器的规则集允许源端口为DNS(53)或者FTP-DATA(20)的包通过和实现连接,显然,如果攻击者把源端口修改为20或者53,就可以摧毁防火墙的防护
-oN 把扫描结果重定向到一个可读的文件logfilename中
-oS 把扫描结果输出到标准输出
--host_timeout 设置扫描一台主机的时间,以ms为单位。默认的情况下,没有超时限制
--max_rtt_timeout 设置对每次检测的等待时间,以毫秒为单位。如果超过这个时间限制,就重传或者超时。默认值是大约9000ms
--min_rtt_timeout 设置Nmap对每次检测至少等待你指定的时间,以ms为单位
-M count 设置进行TCP connect()扫描时,最多使用多少个套接字进行并行的扫描

(3)扫描目标

参数 说明
目标地址 可以为IP地址、CIRD地址等
-iL filename 从filename文件中读取扫描的目标
-iR 让Nmap自己随机挑选主机进行扫描
-p 这个选项让你选择要进行扫描的端口号范围
-exclude 排除指定主机
-excludefile 排除指定文件中的主机

2、Nmap发现存活主机

利用Nmap工具对Kali Linux所在网段进行扫描,在Nmap后加上-sP 192.168.217.0/24 -T5(以速度5进行扫描),Host is up表示存活的主机:

go 复制代码
nmap 192.168.217.0/24 -T5

3、Nmap扫描主机端口

利用Nmap主机对网段中存活的主机(192.168.217.143)进行端口扫描,在nmap后面加上-p 1-65535 -T5,可以看到目标主机开放了以下几个端口:

go 复制代码
nmap 192.168.217.143 -p 1-65535 -T5

4、Nmap扫描主机服务版本

继续对目标主机192.168.217.143进行服务版本的扫描,输入nmap -sV 192.168.217.143,可以看到主机是一个Windows系统,开放服务有以下几个,同时显示了对应的服务版本:

四、Nmap漏洞发现与渗透

1、知识准备

1.1 Nmap扫描中常见漏洞检测脚本

在Nmap扫描中可以利用漏洞脚本检测漏洞类型:

脚本名 描述
ftp - anon.nse 检查目标FTP是否允许匿名登录,自动检测目录是否可读写
ftp - brute.nse FTP爆破脚本,默认只会尝试一些比较简单的弱口令
ftp - vuln - cve2010 -4221. nse ProFTPD 1.3.3c之前的 netio.c 文件中的 pr_netio_telnet_gets 函数中存在多个栈溢出
ftp - proftpd - backdoor. nse 检查 ProFTPD 服务是否被插入后门,如果被插入后门,会运行脚本弹出 shell 指令
ftp - vsftpd - backdoor. nse 检查 VSFTPD服务是否被插人后门,如果被插人后门,会运行脚本弹出 shell 指令
sshvl.nse 检查SSH 服务(版本1)是否存在被中间人攻击的漏洞
smtp - brute. nse 简单爆破 SMTP 弱口令
smtp - enum - users. nse 枚举目标 SMTP 服务器的邮用户名,前提是目在此错误配置
smtp - vuln - cve2010 -4344. nse Exim 4.70之前的版本 string 文件中的 string_vformat 函数中存在堆溢出
smtp - vuln - cve2011 -1720. nse osfix 2.5.13 之前的版本、2.6.10 之前的2.6. 版本、2.7. 之前的2.7.x 版本和 2.8.3 之前的 2.8 版本,存在溢出
smtp - vuln - cve2011 -1764. nse 检查 Exim dkim_exim_verify_finsh()是否存在格式字符串漏洞,此漏洞现在不常见
pop3 - brute. nse POP简单弱口令爆破
imap - brute. nse IMAP简单弱口令爆破
dns - zone - transfer. nse 检查目标 NS 服务器是否允许传送,如果允许,直接把子域拖出来即可
hostmap -ip2hosts.nse 旁站查询,目测了一下脚本,用的是 p2hosts 接口,不过该接口似平早已停用,如果想继续用,可自行到脚本里把接口部分的代码改掉
informix - brute. nse Informix爆破脚本
mysql - empty - password.nse MySQL 扫描 root 空密码,比如想批量抓 MySQL
mysql- brute.nse MySOLroot 弱口简单爆破
mysql-dump -hashes.nse 检查能否导出MySOL中所有用户的哈希值
mysql-vuln - cve2012 -2122.nse MySOL身份认证漏洞 (MariaDB和MySOL 5.1.61,52115355.522),利用条件有些苛刻(需要目标的MySOL 是自己源码编译安装的,这样的成功率相对较高)
ms - sql - empty - password.nse 扫描MSSOL sa空密码,比如想批量抓MSSOL
ms - sql - brute. nse SA弱口令爆破
ms - sql - xp - cmdshell nse 利用xp_cmdshell远程执行系统命令
ms - sql - dump - hashes. nse 检查能否导出MSSOL中所有数据库用户的密码对应的哈希值
pgsql - brute. nse 尝试爆破 Postgresql
telnet - brute. nse 简单爆破Telnet
oracle - brute - stealth. nse 尝试爆破Oracle
http - iis - webday - vuln. nse 检查否有IIS50和IS60的WebDAV可写漏洞
http - vuln - cve2015 - 1635nse IIS60远程代码执行
smb - vuln - ms08 -067 nse smb - vuln -ms10-054.nse smb- vuln - ms10 - 061. nse smb - vuln - ms17 -010. nse SMB远程执行

1.2 Metasploit介绍

Metasploit是一款开源安全漏洞的检测工具,可以帮助安全和IT专业人士识别安全性问题,验证服务漏洞,对系统和服务安全性进行评估,提供安全风险情报。这些功能包括智能开发,代码审计、Web应用扫描、社会工程。Metasploit适用于所有流行的操作系统,Kali Linux已经预装了Metasploit框架。

  • auxiliary:辅助模块
  • encoders:msfencode编码工具模块
  • exploits:攻击模块
  • nops:空模块
  • payloads:攻击载荷模块
  • post:后渗透阶段模块

2、Nmap扫描系统漏洞

首先我们依旧对192.168.217.143的扫描得知目标主机开放了445端口(smb服务),那么我们利用Nmap中著名的漏洞检测脚本smb - vuln -描述7 -010.nse对目标主机进行扫描,如图,目标主机445端口存在着严重的漏洞。

go 复制代码
nmap -p445 --script smb-vuln-ms17-010.nse 192.168.217.143

3、Metasploit漏洞渗透

打开Kali Linux的Metasploit模块,查找MS17010漏洞模块,选择exploit目录下的ms17_010_enternalblue模块并查看设置参数,此时只有RHOST一个参数要配置,设置RHOST为目标主机地址192.168.217.143并进行攻击主机的命令shell:





相关推荐
久绊A1 小时前
网络信息系统的整个生命周期
网络
_PowerShell1 小时前
[ DOS 命令基础 3 ] DOS 命令详解-文件操作相关命令
网络·dos命令入门到精通·dos命令基础·dos命令之文件操作命令详解·文件复制命令详解·文件对比命令详解·文件删除命令详解·文件查找命令详解
龙鸣丿1 小时前
Linux基础学习笔记
linux·笔记·学习
一点媛艺2 小时前
Kotlin函数由易到难
开发语言·python·kotlin
姑苏风2 小时前
《Kotlin实战》-附录
android·开发语言·kotlin
耶啵奶膘2 小时前
uniapp-是否删除
linux·前端·uni-app
奋斗的小花生3 小时前
c++ 多态性
开发语言·c++
魔道不误砍柴功3 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
NiNg_1_2343 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
闲晨3 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享