乐趣区

关于安全:windows提权小结

当以低权用户进去一个生疏的 windows 机器后,无论是提权还是后续做什么,第一步必定要尽可能的收集信息。知己知彼,才百战不殆。

惯例信息收集

systeminfo 查问零碎信息
hostname 主机名
net user 查看用户信息
netstat -ano|find “3389” 查看服务 pid 号
wmic os get caption 查看零碎名
wmic qfe get Description,HotFixID,InstalledOn 查看补丁信息
wmic product get name,version 查看以后安装程序
wmic service list brief 查问本机服务
wmic process list brief 查问本机过程
net share 查看本机共享列表
netsh firewall show config 查看防火墙配置

常见的杀软如下:

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

要收集的信息大抵如下几点:

机器的零碎及其版本
机器的打补丁状况
机器装置的服务
机器的防火墙策略配置
机器的防护软件状况

提权操作

有短缺的信息的状况下,能够有针对性的履行各种提权操作。以下列举局部操作。

内核提权

这是依据零碎的版本信息和补丁信息,利用零碎自身存在的破绽,可参考链接:https://github.com/SecWiki/wi…
要检测破绽能够参考链接:https://github.com/ianxtianxt…
也能够参考链接:https://github.com/brianwrf/W…
msf 中也内置了很多 exp。

Windows-Expolit-suggester
Windows ClientCopyImage Win32k Exploit
Windows TrackPopupMenu Win32k NULL Pointer Dereference
通过 Kitrap0D 进行 Windows 零碎提权
Windows Escalate 工作打算程序 XML 提权
MS16-016mrxdav.sys WebDav 本地提权
EPATHOBJ::pprFlattenRec 本地提权
MS13-053 : NTUserMessageCall Win32k 内核池溢出
MS16-032 Secondary Logon Handle 提权
RottenPotato 提权

利用过程如下图所示:

at 命令利用

在 Windows2000、Windows 2003、Windows XP 这三类零碎中,咱们能够应用 at 命令将权限晋升至 system 权限。
at 是一个公布定时工作打算的命令行工具,语法比较简单。通过 at 命令公布的定时工作打算,Windows 默认以 SYSTEM 权限运行。定时工作打算能够是批处理、能够是一个二进制文件。能够通过“/interactive”开启界面交互模式:

在失去一个 system 的 cmd 之后,应用 taskmgr 命令调用工作管理器,此时的工作管理器是 system 权限,而后 kill 掉 explore 过程,再应用工作管理器新建 explore 过程,将会失去一个 system 的桌面环境

也能够在 msf 下生成木马文件,at 命令执行运行程序,上线后即为 system 权限。

sc 命令利用

实用于 windows 7/8、03/08、12/16
SC 是用于与服务管制管理器和服务进行通信的命令行程序。提供的性能相似于“控制面板”中“管理工具”项中的“服务”。
sc Create syscmd binPath= "cmd /K start" type= own type= interact

这个命令的意思是创立一个名叫 syscmd 的新的交互式的 cmd 服务,而后执行以下命令,就失去了一个 system 权限的 cmd 环境:

sc start systcmd

Unattended Installs

主动装置容许程序在不须要管理员关注下主动装置。这种解决方案用于在领有较多雇员和工夫紧缺的较大 型组织中部署程序。如果管理员没有进行清理的话,那么会有一个名为 Unattend 的 XML 文件残存在零碎上。这个 XML 文件蕴含所有在安装程序过程中的配置,包含一些本地用户的配置,以及管理员账户。
全盘搜寻 Unattend 文件是个好方法,它通常会在以下一个文件夹中:

C:WindowsPanther 
C:WindowsPantherUnattend 
C:WindowsSystem32 
C:WindowsSystem32sysprep

除了 Unattend.xml 文件外,还要注意零碎中的 sysprep.xml 和 sysprep.inf 文件,这些文件中都会蕴含部署操作 零碎时应用的凭据信息,这些信息能够帮忙咱们提权。

C:UsersuserDesktop> dir C:*vnc.ini /s /b /c
# 或者在名称中蕴含关键词的我的项目:C:UsersuserDesktop> dir C: /s /b /c | findstr /sr *password*
 #或者能够在文件内容中搜寻 password 之类的关键字:C:UsersuserDesktop>findstr /si password *.txt | *.xml | *.ini
 #能够查问注册表,例如,字符串 password:reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s

在这些文件中通常蕴含用户名和明码,明码应用 base64 编码,并且在最初会附加”Password”,所以真正的密 码须要去掉最初的”Password”。

dll 劫持

Windows 程序启动的时候须要 DLL。如果这些 DLL 不存在,则能够通过在应用程序要查找的地位搁置歹意 DLL 来提权。
通常,Windows 应用程序有其预约义好的搜寻 DLL 的门路,它会依据上面的程序进行搜寻:

1、应用程序加载的目录
2、32 位系统目录(C:\Windows\System32)3、16 位系统目录(C:\Windows\System)4、Windows 目录 (C:\Windows)
5、当前工作目录(Current Working Directory,CWD)6、在 PATH 环境变量的目录(先零碎后用户)

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesServiceNameParameters能够查问注册表项以查看服务运行的服务 DLL,或者能够将二进制文件加载到 IDA 中并搜寻 loadlibrary 库调用。另外肯定要查看 DLL 自身的 DLL 调用!
一旦找到易受攻击的 DLL 调用,就必须查看该 DLL 的文件系统:

C:> dir vulnerable.dll /s

还要留神,不要因为它找不到就认为它不存在。它可能只是在以后用户帐户无奈查看的目录中。
最初,要执行 DLL highjack,须要在目录层次结构中的某个地位,原始.dll 自身,CWD 或 PATH 中的目录中编写平安测试的 dll。
PATH 是一个环境变量,它定义命令解释器在收回命令时应查找可执行文件的地位。批改 PATH,并将.dll 写入 PATH 中的目录,容许进行 DLL 劫持,过程在 PATH 中搜寻.dll 文件。
一些已知具备 DLL 劫持破绽的 Windows 服务是:

IKE 和 AuthIP IPsec 密钥模块(IKEEXT):wlbsctrl.dll
Windows Media Center 接收器服务(ehRecvr):ehETW.dll
Windows Media Center 打算程序服务(ehSched):ehETW.dll
自动更新(wuauserv):ifsproxy.dll
远程桌面帮忙会话管理器(RDSessMgr):SalemHook.dll
近程拜访连贯管理器(RasMan):ipbootp.dll
Windows Management Instrumentation(winmgmt):wbemcore.dll
音频服务(STacSV):SFFXComm.dll SFCOM.DLL
英特尔疾速存储技术(IAStorDataMgrSvc):DriverSim.dll
Juniper 对立网络服务(JuniperAccessService):dsLogService.dll
Encase Enterprise Agent:SDDisk.dll

有许多工具和框架能够使提权变得更容易:

Metasploit
Sherlock
windows-privesc-check
Windows-Exploit-Suggester
PowerUp, now part of PowerSploit
Nishang

如下,PowerUp 检测到了一个潜在的 DLL 挟持破绽。通常,咱们用 PowerUp 的 Write-HijackDll 函数写歹意 DLL,并重启该应用程序。当启动该应用程序时,它会加载该歹意 DLL 并以更高的权限运行咱们的代码。

未应用双引号的服务门路

当系统管理员配置 Windows 服务时,他们必须指定要执行的命令,或者运行可执行文件的门路,要运行的二进制文件的地位在 binPath 属性中申明。。
当 Windows 服务运行时,会产生以下两种状况之一。如果给出了可执行文件,并且援用了残缺门路,则零碎会按字面解释它并执行。然而,如果服务的二进制门路未蕴含在引号中,则操作系统将会执行找到的空格分隔的服务门路的第一个实例。
如果 binPath 是这样设置的:
C:Program FilesUnquoted Path ServiceCommon Filesservice.exe
Windows 会依据以下程序进行查找:

1.  C:Program.exe
2.  C:Program FilesUnquoted.exe
3.  C:Program FilesUnquoted Path.exe
4.  C:Program FilesUnquoted Path ServiceCommon.exe
5.  C:Program FilesUnquoted Path ServiceCommon Filesservice.exe

也就是说如果不加引号,咱们能够结构一个与第一个名称雷同的歹意二进制文件作为文件系统对象,并在其名称中蕴含空格,并且当服务尝试执行其二进制文件时会将它运行。咱们所须要的只是对门路中目录的写权限。

一条命令找到这些谬误配置:

wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:Windows" |findstr /i /v """

利用 PowerUp 也能够:

同样的如果低权用户有服务指向二进制文件所在文件夹的写权限,则他能够间接将歹意文件上传并重命名以替换失常文件。如果用户能够批改服务配置,则能够间接批改 binPath 指向歹意的文件。

更多能够参看链接:
https://www.cnblogs.com/-mo-/…
https://bbs.pediy.com/thread-…
https://xz.aliyun.com/t/2519#…

退出移动版