内网渗透信息收集

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): 该权限允许用户在该文件夹中创建新的文件和子文件夹,也可以改变文件夹的属性、查看文件夹的所有者和权限等。

https://paper.seebug.org/17/

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
2
3
net use [{<DeviceName> | *}] [\\<ComputerName>\<ShareName>[\<volume>]] [{<Password> | *}]] [/user:[<DomainName>\]<UserName] >[/user:[<DottedDomainName>\]<UserName>] [/user: [<UserName@DottedDomainName>] [/savecred] [/smartcard] [{/delete | /persistent:{yes | no}}]
net use [<DeviceName> [/home[{<Password> | *}] [/delete:{yes | no}]]
net use [/persistent:{yes | no}]

eg:

1
2
要将磁盘驱动器设备名称E:分配给\\Financial服务器上的Letters共享目录,请键入:
net use e: \\financial\letters
1
2
要将磁盘驱动器设备名称M:分配(映射)到\\Financial服务器上的Letters卷中的目录User2,请键入:
net use e: \\financial\letters
1
2
要连接用户标识符User1,就像从帐户域中建立连接一样,请键入
net use d:\\server\share /user:Accounts\User1
1
2
要从\\Financial\Public目录断开连接,请键入:
net use f: \\financial\public /delete
1
2
要连接到\\Financial 2服务器上共享的资源备忘录,请键入:
net use k: "\\financial 2" \memos
1
2
要恢复每次登录时的当前连接,而不考虑将来的更改,请键入:
net use /persistent:yes

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
2
3
4
5
6
7
Use the net view command to display a list of computers. The output is similar to the following:

Server Name Remark
-------------------------------------------------
\\Production Production file server
\\Print1 Printer room, first floor
\\Print2 Printer room, second floor
1
2
3
4
5
To see a list of the resources shared by the \\Production computer, type:
net view \\production

To see a list of the computers in the sales domain or workgroup, type:
net view /domain:sales

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
2
3
net user [<UserName> {<Password> | *} [<Options>]] [/domain]
net user [<UserName> {<Password> | *} /add [<Options>] [/domain]]
net user [<UserName> [/delete] [/domain]]

eg:

1
2
下面的示例显示本地计算机的所有用户帐户的列表:
net user
1
2
以下示例显示有关用户帐户tommyh的信息:
net user tommyh
1
2
以下示例为全名是Jay Jamison,用户帐户名是jayj的用户添加了一个用户帐户,其登录权限为上午8点。周一至周五下午5点(时间指定中没有空格),强制性密码(Cyk4^g3B)和用户的全名:
net user jayj Cyk4^g3B /add /passwordreq:yes /times:monday-friday,8am-5pm /fullname:"Jay Jamison"
1
2
下面的示例使用24小时表示法设置用于登录的登录时间(上午8点到下午5点):
net user miked /time:M-F,8AM-5PM
1
2
下面的示例指定了登录时间:周一从上午4点到下午5点,周二从下午1点到下午3点,周三到周五从上午8点到下午5点
net user anibals /time:M,4AM-5PM;T,1PM-3PM;W-F,8:00-17:00

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
2
3
4
5
net share <ShareName>
net share <ShareName>=<drive>:<DirectoryPath> [/grant:<user>,{read | change |full}] [/users:<number> | /unlimited] [/remark:<text>] [/cache:{manual | documents | programs | BranchCache |none} ]
net share [/users:<number> | /unlimited] [/remark:<text>] [/cache:{manual | documents | programs | BranchCache |none} ]
net share {<ShareName> | <DeviceName> | <drive>:<DirectoryPath>} /delete
net share <ShareName> \\<ComputerName> /delete

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
2
3
net localgroup [<GroupName> [/comment:"<Text>"]] [/domain]
net localgroup [<GroupName> {/add [/comment:"<Text>"] | /delete} [/domain]
net localgroup [<GroupName> <Name> […] {/add | /delete} [/domain]

res

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012

以下参考

https://xz.aliyun.com/t/7663

https://wh0ale.github.io/2018/12/19/2018-12-19-%E5%9F%9F%E6%B8%97%E9%80%8F/

https://www.cnblogs.com/leixiao-/p/10578809.html环境搭建介绍的较全面

内网渗透信息收集

内网和域

内网

局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。

域(Domain)是相对工作组(Workgroup)的概念,形象的说,域就像中央集权,由一台或数台域控制器(Domain Controller)管理域内的其他计算机;工作组就像各自为政,组内每一台计算机自己管理自己,他人无法干涉。

域是一个计算机群体的组合,是一个相对严格的组织,而域控制器则是这个域内的管理核心。

域控制器可以对域内计算机进行集中管理,比如在域控制器上可以定义所有用户不能更改桌面,或者所有用户的密码长度必须8位以上,而工作组环境的计算机则无法做到这些。

一般情况下,域控制器集成了DNS服务,可以解析域内的计算机名称(基于TCP/IP),解决了工作组环境不同网段计算机不能使用计算机名互访的问题。

  • 域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation)。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后, 2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。    – 域既是 Windows 网络操作系统的逻辑组织单元,也是Internet的逻辑组织单元,在 Windows 网络操作系统中,域是安全边界。域管理员只能管理域的内部,除非其他的域显式地赋予他管理权限,他才能够访问或者管理其他的域;每个域都有自己的安全策略,以及它与其他域的安全信任关系。 – 域:域是一种管理边界,用于一组计算机共享共用的安全数据库,域实际上就是一组服务器和工作站的集合。

域和域之间可以通过VPN等设备进行连接,并建立从属和平行的域关系

域、工作组、家庭组

工作组:

  • 所有的计算机都是对等的,没有计算机可以控制另一台计算机。每台计算机都具有一组用户帐户。若要登录到工作组中的任何计算机,您必须具有该计算机上的帐户。
  • 通常情况下,计算机的数量不超过二十台。
  • 工作组不受密码保护。
  • 所有的计算机必须在同一本地网络或子网中。

家庭组:

  • 家庭网络中的计算机必须属于某个工作组,但它们也可以属于某个家庭组。使用家庭组,可轻松与家庭网络中的其他人共享图片、音乐、视频、文档和打印机。
  • 家庭组受密码保护,但在将计算机添加到家庭组时,只需要键入一次密码即可。

域:

  • 有一台或多台计算机为服务器。网络管理员使用服务器控制域中所有计算机的安全和权限。这使得更容易进行更改,因为更改会自动应用到所有的计算机。域用户在每次访问域时必须提供密码或其他凭据。
  • 如果具有域上的用户帐户,您就可以登录到域中的任何计算机,而无需具有该计算机上的帐户。 由于网络管理员经常要确保计算机之间的一致性,所以,您也许只能对计算机的设置进行有限制地更改。
  • 一个域中可以有几千台计算机。
  • 计算机可以位于不同的本地网络中。

系统环境变量

  • set

image-20200505134836878

本机网络配置

  • ipconfig /all

image-20200505084641489

操作系统版本信息、补丁信息等

  • systeminfo

image-20200505084846446

查询系统体系架构

  • echo %PROCESSOR_ARCHITECTURE%
image-20200505085233818

查询已安装的软件及版本信息

  • wmic product get name,version

image-20200505085612101

注:有的系统不可用,我在win10上用wmic /?,以弃用,别人说在win2012R2,win7可以用

image-20200505090205953

powershell替代命令

  • Get-WmiObject -class win32_product | Select-Object -property name ,version

image-20200505090514148

查询本机服务

  • wmic service list brief

image-20200505091145138

查询进程

  • talklist
image-20200505091242672
  • wmic process list brief

image-20200505091342931

  • qprocess *
image-20200505140059112
  • 常见的杀软进程:
进程名 软件
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

image-20200505091604430

查看计划任务

  • schtasks /query /fo LIST /v

image-20200505091811443

注:有的版本可能看不了,

此处在我的靶机Server2008R2中出现了错误:无法加载列资源,这里把编码暂时设置为英文:chcp 437,之后再改回来:chcp 936即可

查看主机开机时间

  • net statistics workstation

image-20200505092016966

查看登录到这台服务器的计算机

  • echo %logonserver%

查看用户列表

与 net user /domain 不同

  • net user
image-20200505092113646

查看本地管理员信息

  • net localgroup administrators
image-20200505092259302

image-20200505092350422

查看当前在线的用户

  • query user || qwinsta
image-20200505092520293 image-20200505092531518

查看本地计算机与所连接客户端之间的会话

  • net session

对于该指令,一开始我的机器上报错:”发生系统错误5。拒绝访问”,找了一下解决办法,只要以管理员身份运行即可,此处靶机没有回话,所以显示为空
img

查看端口

  • netstat -ano
image-20200505093135040 image-20200505092829887

查看补丁信息

  • systeminfo可以
  • wmic qfe get caption,description,hotfixid,installedon
image-20200505093006349

查看本机共享列表

  • net share
image-20200505093339613
  • wmic share get name,path.status
image-20200505093452485

查询路由表及所有可用的ARP缓存表

  • route print
image-20200505093557840
  • arp -a
image-20200505093713636

查看防火墙配置

  • netsh firewall show config
image-20200505093915889

关闭防火墙

  • win2003前:netsh firewall set opmode disable
  • win2003后:netsh advfirewall set allprofiles state off

一般来说不要操作防火墙的开关,风险极大,只需要查看配置即可

查看代理

  • reg query “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings”
image-20200505094325659

查询远程连接服务

  • reg query “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\Control\Terminal Server\WinStations\RDP-Tcp” /v PortNumber

image-20200505094659459

image-20200505094735891

连接端口为16进制数0xd3d,转换为10进制就是3389

使用empire收集信息

在攻击机上安装empire后,使用usemodule powershell/situational_awareness/host/winenum即可收集相关信息,注意使用该模块需要拿到管理员权限

权限

查看当前权限

  • whoami
image-20200505095057090

获取域id

  • whoami /all

image-20200505095151881

获取指定用户的详细信息

  • net user xxx /domain
image-20200505095317773 image-20200505095421848

判断是否存在域

  • ipconfig /all
image-20200505095542250
  • 用nslookup解析域名的ip,来判断dns服务器与域控是否在同一主机上
image-20200505095809931

查询当前登录域与用户信息

  • net config workstation

de1ta靶机未成功,用的先知的图

img

判断主域

  • net time /domain
image-20200505100133137

若是此命令在显示域处显示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=”

image-20200505100619516

利用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靶机报错,参考先知图片

img

查询域内所有计算机

  • net view /domain:域名

de1ta靶机报错,参考先知图片

img

查询域内所有用户组

  • net group /domain
image-20200505101849441

查询所有域成员计算机列表

  • net group “domain computers” /domain
image-20200505141419870 img

获取域密码信息

  • net accounts /domain
image-20200505103458760

获取域信任信息

  • nltest /domain_trusts
image-20200505103739277

寻找域控

查看域控机器名

  • nltest /DCLIST:域名
image-20200505103955222

查看域控主机名

  • nslookup -type=SRV _ladp._tcp
image-20200505104206938

查看域控制器组

  • net group “Domain Controllers” /domain
image-20200505104348725
  • netdom query pdc
image-20200505104452989

获取域内用户和管理员信息

查询所有域用户列表

  • net user /domain
image-20200505104604612

获取域内用户的详细信息

  • wmic useraccount get /all

可以查询到sid

image-20200507155219302

查询存在的用户

  • dsquery user

de1ta靶机报错,参考先知图片

img

本地dsquery命令不存在

查询本地管理员组用户

  • net localgroup administrators
image-20200505105728041

查询域管理员用户组

  • net group “domain admins” /domain
image-20200505105826739

查询管理员用户组

  • net group “Enterprise Admins” /domain
image-20200505110038499

定位域管理员

常规渠道有二个,日志与会话,日志是本地机器的管理员日志,可以用脚本或者内置应用wevtutil导出来看
### 工具
psloggedon.exenetview.exePVEFindADUser.exe,powersploit的PowerView脚本,Empire的user_hunter模块等

查找域管理进程

列出本机的所有进程及进程用户

  • tasklist /v

image-20200505110813873

在以上进程中尽量查找域管理员进程或是与其相关的进程

查找域控的域用户会话

收集所有活动域的会话列表:NetSess -h,使用的是NetSess.exe
img
目前还没有任何会话,所以显示无

  • ## 利用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 相当于这个帐号登录域内主机,可访问资源