Kali渗透测试技术实战

时间:2021-12-23 17:55:35

第一章 引言

EC-Council Certified Ethical Hacker (EC CEH,伦理黑客认证)。整个过程包含五个阶段:侦察、扫描、获取访问、维持访问以及清除痕迹

第二章 下载并安装Kali Linux

硬盘最小120G,尤其是在密码破解、取证和做渗透测试项目的情况下,要求获得控制权限,大量生成数据、收集证据、生成日志和报告。

第三章 软件、补丁和升级

apt-get update # 安装任何新软件包之前都要检查更新,每次要升级操作系统或者应用程序或软件包之前都进行检查。

版本升级

apt-get dist-upgrade

移除

apt-get remove [package_name]

试着移除并重新安装 leafpad

apt-get remove leafpad
apt-get install leafpad

自动移除

当操作系统使用一段时间之后,旧的应用程序软件包渐渐被新的软件包替代。可使用自动移除功能来移除那些系统不再需要的软件包。

apt-get autoremove

完全移除

移除功能并不会删除配置文件,而是把它们留在硬盘上以防止以后还会用到。使用完全移除功能用一行命令就可以清除所有的应用程序软件包和相关的配置文件。

apt-get purge [package_name]

清理

当安装软件包时,系统会从软件源下载软件包,解压并安装。安装过后下载的软件包文件默认会留在硬盘上。

apt-get clean

自动清理
自动清理可以自动在升级和发行版升级之后运行,删除所有已经被新版本替换掉的旧软件包文件。

apt-get autoclean

组合命令

apt-get update && apt-get upgrade && apt-get dist-upgrade
apt-get autoremove && apt-get autoclean

安装 .deb

dpkg -i [package_name.deb]

卸载

dpkg -r [package_name.deb]

完全移除,大写的P

dpkg -P [package_name.deb]

检查已安装的软件包leafpad

dpkg -l leafpad

查看已安装的软件包的详细信息,小写p

dpkg -p [package_name.deb]

第四章 配置 kali

4.4 查看计算机上所有的网卡和单个网卡的状态

ifconfig -a

启动接口和停止接口

ifconfig eth0 down # 停止第一个以太网适配器
ifconfig eth0 up # 开启第一个以太网适配器

更改适配器的IP地址从192.168.1.166到192.168.1.22

ifconfig eth0 192.168.1.22 

更改子网掩码

ifconfig eth0 192.168.1.22 netmask 255.255.255.0

将默认网关更改为 192.168.1.2

route add default gw 192.168.1.2

DNS服务器设置可通过修改 /etc/resolv.conf来实现

echo nameserver 4.4.4.4 > /etc/resolv.conf

上面的命令会删除已有的DNS服务器,并用4.4.4.4来替换。

增加新的DNS服务器,可使用下面命令,将新的域名服务器地址追加到resolv.conf中已有的服务器列表中。

echo nameserver 8.8.8.8 >> /etc/resolv.conf

4.7 FTP 服务器

文件传输协议FTP可以用来在计算机之间传输文件。需要注意的是,FTP并不会加密文件或计算机之间的通信信道,因此网络上的文件传输是可以被监控者获取的。

安装 Pure-FTPd

apt-get install pure-ftpd-common pure-ftpd

小配置

cd /etc/pure-ftpd/conf
echo no > Bind
echo no > PAMAuthentication
echo no > UnixAuthentication
ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure

接下来需要创建FTP服务要用到的用户组和用户,首先创立一个系统组

groupadd ftpgroup

向创建的的组里面添加新用户

useradd -g ftpgroup -d /dev/null -s /bin/false ftpuser

为FTP文件新建一个目录

mkdir -p /home/pubftp

在FTP目录里面添加用户目录,本例中,即将创建额用户sam需要主页一个目录

mkdir /home/pubftp/sam

然后给FTP服务添加一个新的用户和密码,在本例中,新用户是sam

pure-pw useradd sam -u ftpuser -g ftpgroup -d /home/pubftp/sam

接下来会提示你需要创建一个密码。

更新Pure-FTPd的数据库

pure-pw mkdb

启动FTP服务

service pure-ftpd start

启动FTP后,测试该服务

ftp IP地址

4.8 SSH服务器

SSH在通信的计算机之间提供一个安全的加密信道。可防止数据在传输中被网络中的安全工具所检测到,比如入侵系统IDS和入侵防御系统IPS。

生成密钥

首先将原始的SSH密钥从默认目录中移走,但是不要删除它们

mkdir -p /etc/ssh/original_keys
mv /etc/ssh/ssh_host_* /etc/ssh/original_keys
cd /etc/ssh

生成新的SSH密钥

dpkg - reconfigure openssh-server

启动或者重启SSH守护进程

service ssh start
service ssh restart

使用命令行管理SSH服务

/etc/init.d/ssh start # 启动SSH服务
/etc/init.d/ssh stop # 停止SSH服务
/etc/init.d/ssh restart #重启SSH服务

远程访问系统

从其他的Linux系统中远程访问计算机(IP192.168.1.66)

ssh sam@192.168.1.66

同样windows客户端也可以访问SSH需要使用SSH客户端,,常用的putty。

第五章 渗透测试实验环境

5.2 搭建一个免费的实验环境
搭建一个实验环境原因:因为没有人想进*。攻击*或金融系统(如银行)可能会判20年有期徒刑甚至更长,对相关法律不了解是无法为网络犯罪进行辩护的。

1.VMware Player

2.VirtualBox

第六章 渗透测试生命周期

渗透测试的四个阶段:侦察、扫描、渗透、维持访问。

第七章 侦察

7.2 目标网站

目标自身的网站提供了大量信息用于完善约定的描述。

7.3 网站镜像

wget -m -p -E -k -K -np -v http://foo.com

7.4 Google搜索

查看google的高级功能

7.5 Google Hacking

7.6 社交媒体
创建一个虚拟身份

7.7 招聘网站

7.8DNS和DNS攻击
域名解析系统,简称DNS,提供互联网上的地址解析服务。
7.9查询域名服务器

向本地域名服务器查询google网站页面的IP地址

nslookup
> www.google.com

查看使用的域名服务器

nslookup
server

搜索素有邮件类服务器

nslookup
set type =MX
google.com

这将会返回Google域中所有已知的邮件服务器。

本地域名服务器

cat /etc/resolv.conf

将本地域名服务器可以更改为目标域的域名服务器

nslookup
>set type = ns
>google.com

目标域名服务器一旦被识别,nslookup命令使用的域名服务器就可以用如下命令变更为目标域名服务器其中之一。下面例子将域名服务器设置为Google域名服务器其中之一

nslookup
> server 216.239.32.10

7.10区域传输
Domain Internet Gopher(DIG) 程序可用于区域传输。

dig@[name server][domain]axfr

第八章 扫描

“挂得很低的水果”(意指容易实现的目标)

8.2理解网络流量

网络流量是通过各种方式连接在一起的计算机系统质检的电子通信,现今最常见的连接方式就是有线和无限以太网。

理解端口和防火墙

防火墙可以理解为一个具有计算能力的网络设备,有两个或者多个网卡,在网络中扮演一个守门人的角色,按照访问控制列表来严格监控出站和入站流量。只有符合访问控制列表的流量才会允许通过,其他的就会被防火墙拒绝。防火墙是通过开放或者关闭端口来允许或拒绝网络流量的。

端口是计算机之间通信的不同信道。一共有65535个TCP端口和65535个UDP端口用于通信。其中的一小部分端口用于指定的用途,但是并没有完全限制它们的用途。例如TCP的80端口通常被用于HTTP协议。但是其他的通信可以使用80端口,HTTP的通信也可以使用其他端口。

一个理解端口的形象方式是将计算机想象成一幢大楼,有许多门通向不同的办公室,每个办公室里都有一个职员在做一项工作。只有知道正确的办公室地址的人才能从8080端口获得网页内容。

理解IP协议

TCP协议

SYN
-------------------------> 受
SYN/ACK
算 <------------------------- 算
ACK
------------------------->

所有的TCP 都要经过三次握手,它可以确保通信信道两端的计算机是同步的。TCP通信过程的应用包括文件传输(FTP)、Web流量(HTTP)和Email(SMTP、POP和IMAP)

UDP协议

UDP是一个开销比TCP要小的协议。如果TCP通信过程类似于电话,当通信信道的双方在发送信息时通信的双方都确认发出的信息已经被收到,那么UDP通信就类似于广播,信息发出之后发送方和接收方都不会进行确认。

ICMP

ICMP在设计中是一个网络的健康及维护协议,这个协议用来确定一个设备在网络上是否正常运行和通信。ICMP的通信方式在设计中不携带用户数据的,它只会将系统信息在网络设备、计算机和应用服务之间传递

PING
Ping会发出一个类型为8,编码为0的ICMP数据包,表明这个数据包是一个Echo请求。
在Windows平台发出的Ping请求默认会发四次,在Linux平台发出的Ping请求会持续发送直到会用取消。

traceroute

在Windows平台上,默认的TTL是128;在Linux平台上,默认的TTL是64;在思科的网络设备上,TTL高达255.

tracert www.google.com # Windows
traceroute www.google.com # Kali Linux

8.3扫描神器 Nmap

扫描选项

-sS隐蔽扫描
当未指定扫描选项时,隐蔽扫描是Nmap的默认扫描选项,但也可以在命令行使用-sS选项显式指定。隐蔽扫描会发起一个与目标的TCP连接,但是却永远不会完成三次握手。

-sT TCP连接扫描

TCP连接扫描通常用于收集有关目标的更多信息,因为它会对目标主机建立一个完整的TCP连接。与隐蔽扫描不同的是,这种扫描会通过发送ACK包来建立连接。这种扫描会被大多数系统记录下来。但是也可以提供比隐蔽扫描更多的信息。

-sU UDP 扫描

UDP扫描会评估目标系统上的UDP端口。

-sA ACK 扫描

ACK扫描(-sA),可以确定TCP端口是否被过滤。这种扫描会对目标主机发起一个标记为ACK的通信,这种扫描有时可以绕过防火墙,因为它假装是内网机器发起的TCP请求的响应。如果收到一二RST响应,说明该端口没有被过滤掉。如果没有收到响应,或者收到一个类型为3,编码为1,2,3,9,10,13的ICMP响应,说明该端口被过滤了。

timing 模板

-T0 Paranoid

-T0也即Paranoid模板被用于慢速的网络连接,或者是必须最小化被发现的风险的环境。串行扫描

nmap -sU --timing paranoid -p 1-500 10.0.2.100

-sU UDP扫描,-p 1-500,来指定1至500的端口将要被扫描。

-T1 Sneaky

-T1也即Sneaky模板比Paranoid稍快,减少了扫描需要的时间同时,也保持了慢速扫描固有的隐蔽性。串行扫描。

nmap -sU -T1 -p 1-500 10.0.2.100

-T2 Polite

-T2也即Polite模板与-T0和-T1相比继续增加了扫描速度,也是最后一个使用串行扫描技术的 模板。

nmap -sU --timing polite -p 1-500 10.0.2.100

-T3 Normal

-T3 也即Normal模板是Nmap**默认的扫描方式。这是第一个使用并行处理技术**的模板,同时发出多个探测,以此增加总速度。

nmap -sU -T3 -p 1-500 10.0.2.100

-T4 Aggressive

-T4也即Aggressive模板同样使用并行扫描来增加速度。

nmap -sU -T4 -p 1-500 10.0.2.100

-T5 Insane

-T5 也即Insane模板是最快的内置模板。并行扫描技术。

nmap -sU --timing insane -p 1-500 10.0.2.100

IP地址段

本例中地址范围是10.0.2.x的C类地址段,这意味着本次扫描的最大主机数是254,要扫描这些主机,使用如下命令

nmap 10.0.2.1-255

CIDR寻址

nmap 10.0.2.1/24

如果要扫描一个较小的IP地址集,可以使用更小的IP段,例如扫描前100个IP地址

nmap 10.0.2.1-100

CIDR表示

nmap 10.0.2.0/25

扫描列表
假设下面的IP地址被存放在一个targets.txt文件中

10.0.2.1
10.0.2.15
10.0.2.55
10.0.2.100

用下面的命令来使用这个文件

nmap -iL targets.txt

8.4选择端口

选择端口在扫描命令中通过-p参数实现,选择的端口可以是连续的,使用短横线指定范围,也可以逐个指定,使用逗号分开。

nmap -sS -p 1-100
nmap -sU -p 53,137,138,161,162

或者同时使用

nmap -sS -p 1-100,445,8000-9000

输出选项
Nmap输出选项包括普通模式、XML文件和GREPable

-oN 普通输出
普通输出选项会创建一个文本文件

nmap -oN metascan.txt 10.0.2.100

-oX XML文件输出

nmap -oX metascan.xml 10.0.2.100

-oG GREPable 输出
GREPable 输出通常用于类似于GREP的工具进行进一步研究的渗透测试人员,该格式也可以用于AWK、SED、DIFF等工具

nmap -oG metascan.txt 10.0.2.100

-oS脚本小子输出

nmap -oS metascan.txt 10.0.2.100

Nmap脚本引擎
告诉Nmap扫描引擎你要使用一个脚本

namp --script nbstat.nse 10.0.2.100

更新Nmap数据库

nmap --script -updatedb

8.5Hping3

手动制作类似于Nmap引擎自动生成的数据包

hping3 -S 10.0.2.100

8.6Nessus

启动Nessus扫描器

/etc/init.d/nessusd start

第九章 渗透

漏洞:存在于信息系统、系统安全规程、内部控制和实现中,并可能被外部威胁源所利用的弱点。
漏洞等同于弱点。渗透就是利用弱点越权访问信息系统或者造成拒绝服务。

本地渗透

将木马后门隐藏在看似无害的PDF文档或微软Excel的宏代码中。
一个含有自动运行代码的USB 设备。

搜索本地渗透模块 Searchsploit查找渗透模块

searchsploit local windows iis

远程渗透

Metasploit

1. 渗透模块
2. 辅助模块
3. 攻击载荷
4. 监听模块
5. Shellcode 模块

启动/关闭服务

service metasploit status#检查Metasploit服务状态
service metasploit restart#重启服务
service metasploit stop #停止服务

更新数据库

msfupdate

P126-p145

9.4Web渗透重点内容

Web应用程序测试

1.手动检查

2.指纹采集
NetCat即能作为指纹采集工具也能作为监听设备用于监听发来的连接。

nc [host] [port]
nc 192.168.56.102 80
Press Enter
HEAD/HTTP/1.0
Press the Enter key twice

Telnet

telnet [ipaddress]:[port]
telnet 192.168.56.102:80

SSLScan(sslscan)

sslscan [ipaddress]:[port]
sslscan 192.168.56.102:8080

第三步 扫描

确保运行至少2到3个应用程序以建立对系统漏洞的更好的基线。
Arachni Web

W3af

Nikto

Websploit