de1tactf遇到了渗透题,记录下信息收集的命令,
基础知识
windows常用用户
- SYSTEM:本地机器上拥有最高权限的用户。
- Administrator:本地机器上拥有最高权限的用户。
- Guest:只拥有相对较少的权限,默认被禁用。
windows常见用户组
Administrators,管理员组,默认情况下,Administrators中的用户对计算机/域有不受限制的完全访问权。分配给该组的默认权限允许对整个系统进行完全控制。所以,只有受信任的人员才可成为该组的成员。
Power Users,高级用户组,Power Users 可以执行除了为 Administrators 组保留的任务外的其他任何操作系统任务。分配给 Power Users 组的默认权限允许 Power Users 组的成员修改整个计算机的设置。但Power Users 不具有将自己添加到 Administrators 组的权限。在权限设置中,这个组的权限是仅次于Administrators的。
Users:普通用户组,这个组的用户无法进行有意或无意的改动。因此,用户可以运行经过验证的应用程序,但不可以运行大多数旧版应用程序。Users 组是最安全的组,因为分配给该组的默认权限不允许成员修改操作系统的设置或用户资料。Users 组提供了一个最安全的程序运行环境。在经过 NTFS 格式化的卷上,默认安全设置旨在禁止该组的成员危及操作系统和已安装程序的完整性。用户不能修改系统注册表设置、操作系统文件或程序文件。Users 可以关闭工作站,但不能关闭服务器。Users 可以创建本地组,但只能修改自己创建的本地组。
Guests:来宾组,按默认值,来宾跟普通Users的成员有同等访问权,但来宾帐户的限制更多。
Everyone:顾名思义,所有的用户,这个计算机上的所有用户都属于这个组。
windows 文件夹权限
①完全控制(Full Control): 该权限允许用户对文件夹、子文件夹、文件进行全权控制,如修改资源的权限、获取资源的所有者、删除资源的权限等,拥有完全控制权限就等于拥有了其他所有的权限;
②修改(Modify): 该权限允许用户修改或删除资源,同时让用户拥有写入及读取和运行权限;
③读取和运行(Read & Execute): 该权限允许用户拥有读取和列出资源目录的权限,另外也允许用户在资源中进行移动和遍历,这使得用户能够直接访问子文件夹与文件,即使用户没有权限访问这个路径;
④列出文件夹目录(List Folder Contents): 该权限允许用户查看资源中的子文件夹与文件名称;
⑤读取(Read): 该权限允许用户查看该文件夹中的文件以及子文件夹,也允许查看该文件夹的属性、所有者和拥有的权限等;
⑥写入(Write): 该权限允许用户在该文件夹中创建新的文件和子文件夹,也可以改变文件夹的属性、查看文件夹的所有者和权限等。
net 系列命令
net use
Connects a computer to or disconnects a computer from a shared resource, or displays information about computer connections. The command also controls persistent net connections. Used without parameters, net use retrieves a list of network connections.
将计算机连接到共享资源或将其与共享资源断开连接,或显示有关计算机连接的信息。 该命令还控制持久的网络连接。 如果不带参数使用,net use会检索网络连接列表。
1 | net use [{<DeviceName> | *}] [\\<ComputerName>\<ShareName>[\<volume>]] [{<Password> | *}]] [/user:[<DomainName>\]<UserName] >[/user:[<DottedDomainName>\]<UserName>] [/user: [<UserName@DottedDomainName>] [/savecred] [/smartcard] [{/delete | /persistent:{yes | no}}] |
eg:
1 | 要将磁盘驱动器设备名称E:分配给\\Financial服务器上的Letters共享目录,请键入: |
1 | 要将磁盘驱动器设备名称M:分配(映射)到\\Financial服务器上的Letters卷中的目录User2,请键入: |
1 | 要连接用户标识符User1,就像从帐户域中建立连接一样,请键入 |
1 | 要从\\Financial\Public目录断开连接,请键入: |
1 | 要连接到\\Financial 2服务器上共享的资源备忘录,请键入: |
1 | 要恢复每次登录时的当前连接,而不考虑将来的更改,请键入: |
net view
Displays a list of domains, computers, or resources that are being shared by the specified computer. Used without parameters, net view displays a list of computers in your current domain.
显示指定计算机正在共享的域、计算机或资源的列表。在没有参数的情况下使用,net view将显示当前域中的计算机列表。
1 | net view [\\ComputerName [/CACHE] | [/ALL] | /DOMAIN[:DomainName]] |
eg:
1 | Use the net view command to display a list of computers. The output is similar to the following: |
1 | To see a list of the resources shared by the \\Production computer, type: |
net user
Adds or modifies user accounts, or displays user account information.
Net user is a command-line tool that is built into Windows Vista. To run net user, open a command prompt, type net user with the appropriate parameters, and then press ENTER.
添加或修改用户帐户,或显示用户帐户信息。
Net user是Windows Vista中内置的命令行工具。 若要运行net user,请打开命令提示符,键入具有适当参数的net user,然后按Enter。
1 | net user [<UserName> {<Password> | *} [<Options>]] [/domain] |
eg:
1 | 下面的示例显示本地计算机的所有用户帐户的列表: |
1 | 以下示例显示有关用户帐户tommyh的信息: |
1 | 以下示例为全名是Jay Jamison,用户帐户名是jayj的用户添加了一个用户帐户,其登录权限为上午8点。周一至周五下午5点(时间指定中没有空格),强制性密码(Cyk4^g3B)和用户的全名: |
1 | 下面的示例使用24小时表示法设置用于登录的登录时间(上午8点到下午5点): |
1 | 下面的示例指定了登录时间:周一从上午4点到下午5点,周二从下午1点到下午3点,周三到周五从上午8点到下午5点 |
net share
Manages shared resources. Used without parameters, net share displays information about all of the resources that are shared on the local computer. For each resource, the device name(s) or pathname(s) and a descriptive comment are displayed.
管理共享资源。 使用不带参数的net share可以显示有关在本地计算机上共享的所有资源的信息。 对于每个资源,将显示设备名称或路径名称以及描述性注释。
1 | net share <ShareName> |
net localgroup
Adds, displays, or modifies local groups. Used without parameters, net localgroup displays the name of the server and the names of local groups on the computer.
添加,显示或修改本地组。 使用不带参数的net localgroup可以显示服务器的名称和计算机上的本地组的名称。
1 | net localgroup [<GroupName> [/comment:"<Text>"]] [/domain] |
res
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012
以下参考
https://wh0ale.github.io/2018/12/19/2018-12-19-%E5%9F%9F%E6%B8%97%E9%80%8F/
内网渗透信息收集
内网和域
内网
局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。
域
域(Domain)是相对工作组(Workgroup)的概念,形象的说,域就像中央集权,由一台或数台域控制器(Domain Controller)管理域内的其他计算机;工作组就像各自为政,组内每一台计算机自己管理自己,他人无法干涉。
域是一个计算机群体的组合,是一个相对严格的组织,而域控制器则是这个域内的管理核心。
域控制器可以对域内计算机进行集中管理,比如在域控制器上可以定义所有用户不能更改桌面,或者所有用户的密码长度必须8位以上,而工作组环境的计算机则无法做到这些。
一般情况下,域控制器集成了DNS服务,可以解析域内的计算机名称(基于TCP/IP),解决了工作组环境不同网段计算机不能使用计算机名互访的问题。
- 域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation)。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后, 2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。 – 域既是 Windows 网络操作系统的逻辑组织单元,也是Internet的逻辑组织单元,在 Windows 网络操作系统中,域是安全边界。域管理员只能管理域的内部,除非其他的域显式地赋予他管理权限,他才能够访问或者管理其他的域;每个域都有自己的安全策略,以及它与其他域的安全信任关系。 – 域:域是一种管理边界,用于一组计算机共享共用的安全数据库,域实际上就是一组服务器和工作站的集合。
域和域之间可以通过VPN等设备进行连接,并建立从属和平行的域关系
域、工作组、家庭组
工作组:
- 所有的计算机都是对等的,没有计算机可以控制另一台计算机。每台计算机都具有一组用户帐户。若要登录到工作组中的任何计算机,您必须具有该计算机上的帐户。
- 通常情况下,计算机的数量不超过二十台。
- 工作组不受密码保护。
- 所有的计算机必须在同一本地网络或子网中。
家庭组:
- 家庭网络中的计算机必须属于某个工作组,但它们也可以属于某个家庭组。使用家庭组,可轻松与家庭网络中的其他人共享图片、音乐、视频、文档和打印机。
- 家庭组受密码保护,但在将计算机添加到家庭组时,只需要键入一次密码即可。
域:
- 有一台或多台计算机为服务器。网络管理员使用服务器控制域中所有计算机的安全和权限。这使得更容易进行更改,因为更改会自动应用到所有的计算机。域用户在每次访问域时必须提供密码或其他凭据。
- 如果具有域上的用户帐户,您就可以登录到域中的任何计算机,而无需具有该计算机上的帐户。 由于网络管理员经常要确保计算机之间的一致性,所以,您也许只能对计算机的设置进行有限制地更改。
- 一个域中可以有几千台计算机。
- 计算机可以位于不同的本地网络中。
系统环境变量
- set
本机网络配置
- ipconfig /all
操作系统版本信息、补丁信息等
- systeminfo
查询系统体系架构
- echo %PROCESSOR_ARCHITECTURE%
查询已安装的软件及版本信息
- wmic product get name,version
注:有的系统不可用,我在win10上用wmic /?,以弃用,别人说在win2012R2,win7可以用
powershell替代命令
- Get-WmiObject -class win32_product | Select-Object -property name ,version
查询本机服务
- wmic service list brief
查询进程
- talklist
- wmic process list brief
- qprocess *
- 常见的杀软进程:
进程名 软件 360sd.exe 360杀毒 360tray.exe 360实时保护 ZhuDongFangYu.exe 360主动防御 KSafeTray.exe 金山卫士 SafeDogUpdateCenter.exe 安全狗 McAfee McShield.exe McAfee egui.exe NOD32 AVP.exe 卡巴斯基 avguard.exe 小红伞 bdagent.exe BitDefender
获取软件安装路径
- wmic process where(description=”mysqld.exe”)>>mysql.log
查看已启动的程序信息
- wmic startup get command.caption
查看计划任务
- schtasks /query /fo LIST /v
注:有的版本可能看不了,
此处在我的靶机Server2008R2中出现了错误:无法加载列资源,这里把编码暂时设置为英文:
chcp 437
,之后再改回来:chcp 936
即可
查看主机开机时间
- net statistics workstation
查看登录到这台服务器的计算机
- echo %logonserver%
查看用户列表
与 net user /domain 不同
- net user
查看本地管理员信息
- net localgroup administrators
查看当前在线的用户
- query user || qwinsta
查看本地计算机与所连接客户端之间的会话
- net session
对于该指令,一开始我的机器上报错:”发生系统错误5。拒绝访问”,找了一下解决办法,只要以管理员身份运行即可,此处靶机没有回话,所以显示为空
查看端口
- netstat -ano
查看补丁信息
- systeminfo可以
- wmic qfe get caption,description,hotfixid,installedon
查看本机共享列表
- net share
- wmic share get name,path.status
查询路由表及所有可用的ARP缓存表
- route print
- arp -a
查看防火墙配置
- netsh firewall show config
关闭防火墙
- win2003前:netsh firewall set opmode disable
- win2003后:netsh advfirewall set allprofiles state off
一般来说不要操作防火墙的开关,风险极大,只需要查看配置即可
查看代理
- reg query “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings”
查询远程连接服务
- reg query “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\Control\Terminal Server\WinStations\RDP-Tcp” /v PortNumber
连接端口为16进制数0xd3d,转换为10进制就是3389
使用empire收集信息
在攻击机上安装empire后,使用
usemodule powershell/situational_awareness/host/winenum
即可收集相关信息,注意使用该模块需要拿到管理员权限
权限
查看当前权限
- whoami
获取域id
- whoami /all
获取指定用户的详细信息
- net user xxx /domain
判断是否存在域
- ipconfig /all
- 用nslookup解析域名的ip,来判断dns服务器与域控是否在同一主机上
查询当前登录域与用户信息
- net config workstation
de1ta靶机未成功,用的先知的图
判断主域
- net time /domain
若是此命令在显示域处显示WORKGROUP,则不存在域,若是报错:发生系统错误5,则存在域,但该用户不是域用户
探测域内存活主机
icmp
- for /L %I in (1,1,20) DO @ping -w 1 -n 1 192.168.0.%I | findstr “TTL=”
- for /l %i in (1,1,255) do @ ping 192.168.0.%i -w 1 -n 1 | find /i “ttl=”
利用empire中的arpscan模块:
usemodule situational_awareness/network/arpscan
,设置Range(范围)后即可扫描
扫描端口
- 使用telnet进行扫描:
telnet 主机名 22
- 使用metasploit进行扫描:
需要用到的是auxiliar/scanner/portscan/ack、ftpbounce、syn、tcp、xmas
等模块- PowerSploit中的Invoke-Portscan.ps1脚本,位于Recon目录下
- 使用Nishang的PortScan模块,位于scan目录下,上传到主机上执行
获取banner
扫描到端口后就要获取到其Banner信息,接着就可以在漏洞库里查找poc,这个可以找一下常见的端口的服务来得知
端口号 端口说明 攻击技巧 21/22/69 ftp/tftp:文件传输协议 允许匿名上传、下载、爆破、嗅探、溢出和后门 22 ssh:远程连接 爆破OpenSSH;28个退格 23 telnet:远程连接 爆破\嗅探、弱口令 25 smtp:邮件服务 邮件伪造 53 DNS:域名系统 DNS区域传输\DNS劫持\DNS缓存投毒\DNS欺骗\利用DNS隧道技术刺透防火墙 67/68 dhcp 劫持\欺骗 80/443/8080 常见web服务端口 web攻击、爆破、对应服务器版本漏洞 110 pop3 爆破、嗅探 139 samba 爆破\未授权访问\远程代码执行 143 imap 爆破 161 snmp 爆破 389 ldap目录访问协议 注入攻击\未授权访问,弱口令 512/513/514 linux rexec 直接使用rlogin\爆破 873 rsync 未授权访问\文件上传 1080 socket 爆破:进行内网渗透 1352 lotus Domino邮件服务 爆破:弱口令\信息泄漏:源代码 1433 mssql 爆破:使用系统用户登录\注入攻击\SA弱口令 1521 oracle 爆破:TNS\注入攻击\反弹shell 2049 nfs 配置不当 2181 zookeeper 未授权访问 3306 mysql 爆破\拒绝服务\注入\提权 3389 rdp 爆破\Shift后门 3690 SVN服务 SVN泄露\未授权访问 4848 glassfish 爆破:控制台弱口令\认证绕过 5000 sybase/DB2 爆破\注入 5432 postgresql 缓冲区溢出\注入攻击\爆破:弱口令 5632 pcanywhere 拒绝服务\代码执行,抓取密码 5900 vnc 爆破:弱口令\认证绕过 6379 redis 未授权访问\爆破:弱口令 7001/7002 weblogic Java反序列化\控制台弱口令\控制台部署webshell 8069 zabbix 远程命令执行\SQL注入 8080/8089 JBoss/Resin/Jetty/Jenkins 反序列化、控制台弱口令 9090 websphere控制台 爆破:控制台弱口令\Java反序列 9200/9300 elasticsearch 远程代码执行 10000 webmin控制面板 弱口令 11211 memcacache 未授权访问 27017/27018 mongodb 爆破\未授权访问 50000 SAP Management Console 远程执行
获取域内的基础信息
查询域
- net view /domain 用来查询当前环境存在几个域
de1ta靶机报错,参考先知图片
查询域内所有计算机
- net view /domain:域名
de1ta靶机报错,参考先知图片
查询域内所有用户组
- net group /domain
查询所有域成员计算机列表
- net group “domain computers” /domain
获取域密码信息
- net accounts /domain
获取域信任信息
- nltest /domain_trusts
寻找域控
查看域控机器名
- nltest /DCLIST:域名
查看域控主机名
- nslookup -type=SRV _ladp._tcp
查看域控制器组
- net group “Domain Controllers” /domain
- netdom query pdc
获取域内用户和管理员信息
查询所有域用户列表
- net user /domain
获取域内用户的详细信息
- wmic useraccount get /all
可以查询到sid
查询存在的用户
- dsquery user
de1ta靶机报错,参考先知图片
本地dsquery命令不存在
查询本地管理员组用户
- net localgroup administrators
查询域管理员用户组
- net group “domain admins” /domain
查询管理员用户组
- net group “Enterprise Admins” /domain
定位域管理员
常规渠道有二个,日志与会话,日志是本地机器的管理员日志,可以用脚本或者内置应用wevtutil导出来看
### 工具
psloggedon.exe,netview.exe,PVEFindADUser.exe,powersploit的PowerView脚本,Empire的user_hunter模块等
查找域管理进程
列出本机的所有进程及进程用户
- tasklist /v
在以上进程中尽量查找域管理员进程或是与其相关的进程
查找域控的域用户会话
收集所有活动域的会话列表:
NetSess -h
,使用的是NetSess.exe
目前还没有任何会话,所以显示无
- ## 利用powershell收集域信息
首先要将powershell的权限限制更改为RemoteSigned,这样就可以执行本地上的脚本
输入:
Get-ExecutionPolicy
,发现自己并不是RemoteSigned权限,输入:Set-ExecutionPolicy RemoteSigned
,按Y确定即可,在本地虚拟机测试时还可以将脚本权限改为Unrestricter,这样可以执行来自网络与本地的任何脚本此处要使用的脚本在PowerSploit/Recon中,将要用到的PowerView.ps1传入靶机,在powershell中打开该脚本目录并导入:
Import-Module .\PowerView.ps1
就可以进行收集了具体命令的相关用法在
PowerSploit/Recon/READE.md
中
攻击流程
1 | net use \\\\域控(如pc.xx.com) password /user:xxx.com\username 相当于这个帐号登录域内主机,可访问资源 |