kali的学习

时间:2024-10-23 08:27:14

一、Namp的使用

  首次使用时,要确保Metasploitable已经启动并正在运行

nmap扫描原理:

   首先判断nmap传输的命令行中是否包含域名,如果包含需要利用DNS服务器进行域名分析,然后发送ICMP Echo Request 来探测主机存活性。

nmap默认扫描最知名的1000个端口

nmap的命令很多,主要介绍常用的:

nmap  --help    介绍很多nmap的基本操作的格式

man nmap  可以查看nmap的手册

nmap  ip(172.16.17.201)  可以看到很多开放的端口和它的确切数量,运行时间一般比较慢

 nmap 172.16.17.201/24

/24   保留使用前三个数字,最后一个数字然我们的ip范围内发生变化。

nmap 172.16.17.201 -p 4000

-p  可以扫描单个端口,多个端口,或者扫描一个范围的端口

nmap 172.168.201 -p 4000 -sT

这个属于全扫描(使用完整的三次握手建立链接,能够建立链接就判定端口开放,否则判断端口关闭)如果端口开放,就会完成完整的三次握手,建立链接,如果端口关闭,只能进行一次握手,无法建立链接。

nmap 172.168.201 -p 4000 -sS

这个属于半链接扫描(只进行了两次握手,对方返回确认帧(ACK=1)判断端口开放

该扫描不会记录到系统的日志里面,但是要有root权限

nmap -sP 172.168.201

扫描网段中有哪些主机在线,不扫描端口

nmap 172.168.201 -p 4000 -sV

扫描端口的时候,默认显示端口对应的服务,不会显示服务版本

在使用的时候,我们还可以改变它的扫描深度

--version - intensity 8(可以设置在0到9之间),默认的为7,就要更高的可能性来扫描出正确服务版本

sudo nmap -sU 172.16.17.201(UDP扫描)

这个是很容易忽视的东西,很多人不知道它,因为它的扫描速度更慢

按住向上的键可以看到它扫了的百分比

nmap 172.16.17.201 -p 4000 -O

如果我们扫描的是自己虚拟机的ip ,你就会看到许多东西,运行版本,目标距离我们多少跳(主机在我们的内部网络),甚至还可以看到MAC地址,有点像扫描蜜罐,

-O 可以识别出操作系统

nmap 172.16.17.201 -p 4000 -oN result.txt

将扫描结果导出为txt文本

kali里面抓包

抓包eth0(第一个以太网接口,eth0通常是系统默认的以太网接口名称,用于连接主机到局域网或广域网)

如何绕过防火墙和IPS使用Nmap?

-A   激进的扫描   很容易被发现,

-F  代替扫描,扫描前1000个端口

二、Metasploit 的使用

该工具一般用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,

在kali中是自带的,

banner   可以进入msf的控制台

exit    退出控制台

back 返回msf控制台

search  +模块关键字    查询相关模块

info 查看模块的详细信息

use  使用指定模块

show  查看show指定的参数

show  exploits   查看所有的exploit模块

show options  查看use使用模块可配置的参数

show targets  查看攻击目标的类型

exploit /run    攻击

set 和 setg用法一样,setg是对全局多有的这个参数都进行配置

sessions  查看运行的会话,一般在回弹漏洞利用成功的靶机权限时使用

sessions -i   可以进入运行会话

set payload windows/x64/meterpreter/reverse_tcp    设置攻击载核

查看端口扫描

search portscan

使用端口扫描

use auxiliary/scanner/portscan/ftpbounce 

Mwtaspolit的payload的几种模式:

Single:
  是一种完全独立的Payload,而且使用起来就像运行calc.exe一样简单,例如添加一个系统用户或删除一份文件。由于Single Payload是完全独立的,因此它们有可能会被类似netcat这样的非metasploit处理工具所捕捉到。

Stager:
  这种Payload 负责建立目标用户与攻击者之间的网络连接,并下载额外的组件或应用程序。一种常见的Stager Payload就是reverse_tcp,它可以让目标系统与攻击者建立一条 tcp 连接,让目标系统主动连接我们的端口(反向连接)。另一种常见的是bind_tcp,它可以让目标系统开启一个tcp监听器,而攻击者随时可以与目标系统进行通信(正向连接)。

Stage:
  是Stager Payload下的一种Payload组件,这种Payload可以提供更加高级的功能,而且没有大小限制。

三、kali网络配置,nat模式和桥接模式

一、NAT模式

  1. 定义

        NAT(网络地址转换)模式允许虚拟机通过宿主机的网络连接来访问外部网络。在这种模式下,宿主机相当于一个网关,虚拟机通过宿主机进行网络地址转换来访问外部网络。

  2. 工作原理

    •   虚拟机有虚拟网卡,与宿主机共享物理层设备,但在应用层上它们是相对独立的。
    •    宿主机有两个网卡:一个是真实链接现实世界的真实路由器,另一个是虚拟网卡,链接了一个虚拟交换机。这个虚拟交换机同时链接了虚拟系统和宿主机。
    •    虚拟机想要访问外网,必须通过宿主机的IP地址,从外部网络看来,访问的是宿主机的IP地址,但实际上是虚拟机在进行访问。
  3. 特点

    • 虚拟机可以访问外部网络。
    • 虚拟机IP与宿主机IP不在同一网段。
    • 虚拟机不能与宿主机本局域网中的其他真实或虚拟主机直接通信。
  4. 配置方法

    • 在虚拟机管理软件中,将网络适配器设置为NAT模式。
    • 虚拟机启动后,会自动通过DHCP获取一个IP地址,该地址通常位于一个由VMware或VirtualBox等虚拟机软件管理的私有网络段中。

二、桥接模式

  1. 定义

          桥接模式是将虚拟机直接连接到宿主机的物理网络,使虚拟机能够像独立的主机一样进行网络通信。

  2. 工作原理

    • 桥接模式利用虚拟网桥将宿主机的物理网卡与虚拟机的虚拟网卡连接起来。
    • 在这种模式下,虚拟机与宿主机相当于同一个局域网中的两台电脑,它们处于同一个网段下,具有同等的网络地位。
  3. 特点

    • 虚拟机可以访问外部网络。
    • 虚拟机IP与宿主机IP处于同一网段。
    • 虚拟机可以与宿主机本局域网中的其他真实或虚拟主机进行通信。
  4. 配置方法

    • 在虚拟机管理软件中,将网络适配器设置为桥接模式。
    • 选择宿主机使用的物理网卡作为桥接的网卡。
    • 虚拟机启动后,可以手动配置IP地址(如果网络中有DHCP服务器,也可以自动获取)。

四、kali的基本知识

内部布局:

/etc/:  包含已经安装工具的配置文件;

/opt/: 包含Metasploit及其相关模块;

/sys/: 包含外部硬件和接口的配置文件

/root/:这个是root用户目录

/lib/  包含了依赖于操作系统的库

kali里面自带的记事本:mousepad

mousepad /etc/apt/sources.list

一般的话,使用apt命令下载默认储存位置是不同的主要根据下载内容的不同,

  1. 下载的软件包:

       apt命令下载的软件包通常会先被存放在/var/cache/apt/archives目录中。用于存储所有已下载但尚未安装或已安装的软件包,以便在需要时能够快速访问或重新安装。
  2. 安装后的软件

        软件包安装后,其实际内容(如可执行文件、库文件等)通常会被放置在系统的标准目录中。例如,可执行文件通常位于/usr/bin库文件通常位于/usr/lib/usr/lib64,而配置文件则通常位于/etc
  3. 缓存和临时文件:apt命令还会生成一些缓存和临时文件,通常也存储在/var/cache/apt目录下。这些文件一般用于加速后续的包管理和更新操作。

  apt换源  在国内安装一些软件(安全工具、漏洞工具)时,会下载非常慢,因为软件的列表在国外所以连接非常慢,就要换源,换成阿里云的源,记得要定期更新

换源是可以这样弄,一般不要用中科大的源,因为它有些只针对中科大的学生

devops   开发运维一体化

我比较感兴趣的是密码破解,所以介绍一下在kali中的一个重要的破解密码的工具

Hydra(海德拉)

hydra -h 查看hydra的所有参数

-l     指定破解的用户,对特定用户破解

-L  指定用户名字典

-p    一般采用密码字典

-P   指定密码字典

-S   采用SSL链接

-s   通过这个参数指定非默认端口

-e   可选选项,n:空密码试探,s:使用指定用户和密码试探

-t   同时运行的线程数,默认为16

-M   指定目标列表文件一行一条

-o   指定结果输出文件

-f    在使用-M参数以后,找到第一对登录名或者密码的时候中止破解

-w  设置最大超时的时间,单位秒,默认是30s

-v/-V    显示详细过程

server     目标ip

service    指定服务器,支持的服务和协议

Kali默认自带了一些字典,在 /usr/share/wordlists 目录下

比如:dirb文件夹

破解SSH

hydra -L user.txt -P passwd.txt -o ssh.txt -vV -t ip  ssh -s 22   
-L 指定用户字典文件
-P 指定密码字典文件  
-o 把成功的输出到ssh.txt文件
-vV 显示详细信息  
-s 指定其他端口 如果要修改默认22端口,可以使用 -s 参数

Docker

   一个开源的应用容器引擎,是一个用于构建、传送、运行应用程序的平台。优势:方便、快捷、容易维护。我们一般在kali安装Docker,因为兼容性最好

不换源的我,等了很久了。

Docker

镜像  images   应用程序的静态文件,类似虚拟机的镜像

docker  images     查看镜像

容器  container  运行状态的应用程序,类似安好的虚拟机

docker ps -a   查看容器

默认情况下,镜像和容器都是空的

docker  pull 镜像名称    下载镜像

永恒之蓝漏洞复现:

确定两个靶机的ip:

win7:192.168.161.134

记得关闭防火墙

攻击机:kali:192.168.161.130

*需要注意的,利用ms17-010漏洞,靶机必须同时开启139和445端口*

查看靶机是否开启了139和445端口 

然后kali扫描网段


nmap -v -p139,445 192.168.233.0/24   

发现这两个端口没有打开,



    检查服务状态:
        139和445端口通常与SMB/CIFS服务相关。在Kali Linux中,安装并启动samba服务来管理这些端口。
        使用systemctl命令检查samba服务的状态:systemctl status smbd和systemctl status nmbd。

    安装Samba服务:
       sudo apt update和sudo apt install samba。

    启动并启用Samba服务:
        使用systemctl命令启动samba服务:sudo systemctl start smbd和sudo systemctl start nmbd。
        设置samba服务在启动时自动运行:sudo systemctl enable smbd和sudo systemctl enable nmbd。

    配置防火墙:
        Kali Linux默认使用ufw(Uncomplicated Firewall)作为防火墙。你需要确保防火墙允许139和445端口的流量。
        允许139和445端口的TCP和UDP流量:sudo ufw allow 139/tcp、sudo ufw allow 139/udp、sudo ufw allow 445/tcp和sudo ufw allow 445/udp。
        检查防火墙状态:sudo ufw status。

    验证端口是否开放:
        使用netstat或ss命令检查139和445端口是否已开放:sudo netstat -tuln | grep '139\|445'或sudo ss -tuln | grep '139\|445'。

smbd(Samba SMB Daemon)服务当前是禁用的,需要启用并启动smbdnmbd服务

命令:
sudo systemctl enable smbd  
sudo systemctl enable nmbd

  启用服务的命令 sudo systemctl enable smbdsudo systemctl enable nmbd 创建了指向服务单元文件的符号链接,这些链接位于 /etc/systemd/system/multi-user.target.wants/ 目录下。

Kali Linux默认使用UTF(Uncomplicated Firewall)作为防火墙。需要确保防火墙允许139和445端口的流量。不过我的kali上没有防火墙。

允许139和445端口的TCP和UDP流量:
sudo ufw allow 139/tcp、sudo ufw allow 139/udp、sudo ufw allow 445/tcp和sudo ufw allow 445/udp。
检查防火墙状态:
sudo ufw status。

启动这些服务以立即开始使用

sudo systemctl start smbd  
sudo systemctl start nmbd

查看它是否运行:

查看是否开启:

接下来我们开启msfconsole,有四个模块可以用

 使用 模块3 对目标主机进行扫描,利用options先看一下选项,RHOSTS为目标主机,利用set 命令设置,之后就可以run了

又发现了错误:尝试通过 SMB(Server Message Block)协议进行登录时遇到了身份验证问题

又出现了这个问题:

利用show payloads显示payload