渗透测试——一、黑客实践之网络扫描-灵析社区

超超

一、该文章简介

网络扫描时黑客攻击钟信息收集的有效手段,通过扫描可以了解网络中主机的相关情况,为下一步渗透做准备。同时,扫描需要借助工具,本篇介绍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 Linuxwww.debian.org开放的开发模式,并易于进行软件包升级apt
Fedora Corewww.redhat.com拥有数量庞大的用户、优秀的社区技术支持、并有很多创新yum(rpm) up2date(rpm)
CentOSwww.centos.org CentOS是一种对RHEL源码再编译的产物rpm
SUSE Linuxwww.suse.com专业的操作系统,易用的YaST软件包管理系统YaST(rpm)
YaST(rpm)www.mandriva.com操作界面友好,使用图形配置工具,支持NTFS分区的大小变更rpm
YaST(rpm)www.knoppix.com可以在CD上运行,具有优秀的硬件检测和适配能力,可作为系统的急救盘使用apt
Gentoo Linuxwww.gentoo.org高度的可定制性,使用手册完整portage
Ubuntuwww,.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端口等等。

端口服务说明
21FTPFTP服务所开放的端口,用于上传、下载文件
22SSH用于通过命令行模式或远程连接软件连接Linux实例
23Telnet用于Telnet远程登录ECS实例
25SMTPSMTP服务所开放的端口,用于发送邮件
80HTTP用于HTTP服务提供访问功能,例如Apache,Nginx等服务
110 POP3用于POP3协议,POP3是电子邮件收发的协议
143IMAP用于电子邮件接收的协议
443 HTTPS用于HTTPS服务提供访问功能。是一种能提供加密和通过安全端口传输的协议
1433 SQL ServerSQL Server的TCP端口,用于供对外提供服务
1434 SQL ServerSQL Server的UDP端口,用于返回使用了哪个TCP/IP端口
1521Oracle通信端口
3389Windows 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,回车:

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)扫描类型

参数说明
-sTTCP connect()扫描,这是最基本的TCP扫描方式,这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求及错误信息
-sSTCP同步扫描(TCP SYN),因为不必全部打开一个TCP连接,所以该技术通常称为半开扫描(half-open),该技术最大的好处是很少有系统能够把这计入系统日志,不过,需要root权限来定制SYN数据包
-sF
-sX
-sN
秘密FIN数据包扫描、圣诞树、空扫描模式,这些扫描方式的理论依据是:关闭端口需要对你的探测包回应RST包,而打开的端口必须忽略有问题的包
-sPping扫描,用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表示存活的主机:

nmap 192.168.217.0/24 -T5

3、Nmap扫描主机端口

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

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.nseFTP爆破脚本,默认只会尝试一些比较简单的弱口令
ftp - vuln - cve2010 -4221. nseProFTPD 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. nseosfix 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. nsePOP简单弱口令爆破
imap - brute. nse IMAP简单弱口令爆破
dns - zone - transfer. nse检查目标 NS 服务器是否允许传送,如果允许,直接把子域拖出来即可
hostmap -ip2hosts.nse旁站查询,目测了一下脚本,用的是 p2hosts 接口,不过该接口似平早已停用,如果想继续用,可自行到脚本里把接口部分的代码改掉
informix - brute. nseInformix爆破脚本
mysql - empty - password.nseMySQL 扫描 root 空密码,比如想批量抓 MySQL
mysql- brute.nseMySOLroot 弱口简单爆破
mysql-dump -hashes.nse检查能否导出MySOL中所有用户的哈希值
mysql-vuln - cve2012 -2122.nseMySOL身份认证漏洞 (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 - 1635nseIIS60远程代码执行
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端口存在着严重的漏洞。

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:

阅读量:2087

点赞量:0

收藏量:3