Пентест по-своему. Создаем собственную методику тестирования на примере машин с OSCP и Hack The Box

Содержание статьи

  • Сканирование и сбор информации
  • Сканирование портов
  • Сервисы
  • Поиск уязвимостей
  • Повышение привилегий
  • Постэксплуатация
  • Чистка следов
  • Выводы

Каж­дому начина­юще­му пен­тесте­ру или прос­то энту­зиас­ту от мира ИБ однажды хочет­ся перей­ти от чте­ния зах­ватыва­ющих рай­тапов к прак­тике. Как же луч­ше это сде­лать и на что обя­затель­но сто­ит обра­тить вни­мание? В этой статье я рас­ска­жу о сво­ем пути и поделюсь некото­рыми из сво­их нарабо­ток.

Рай­тапы по HTB или CTF-машинам срод­ни хороше­му детек­тиву. Опыт­ный пен­тестер быс­тро находит уяз­вимость, пишет скрипт для ее экс­плу­ата­ции, и вот уже завет­ный флаг у нас в руках! Одна­ко в реаль­нос­ти этот про­цесс со все­ми удач­ными и неудач­ными попыт­ками может занять от нес­коль­ких часов до нес­коль­ких десят­ков дней. Об этом не при­нято писать в рай­тапах, ведь сам поиск далеко не такой кра­соч­ный. Как же в реаль­нос­ти находят­ся те самые «пра­виль­ные мес­та» и как узнать, на что сто­ит обра­тить вни­мание? Для это­го у боль­шинс­тва серь­езных пен­тесте­ров есть собс­твен­ная методи­ка или спи­сок чек‑лис­тов.

info

Вся информа­ция, при­веден­ная в статье, соб­рана авто­ром во вре­мя про­хож­дения лабора­тории OSCP и машин с HTB. При реаль­ном пен­тесте мно­гие вещи могут работать ина­че, и это сто­ит обя­затель­но учи­тывать! Если ты слы­шишь о OSCP впер­вые, прос­то про­читай статью о самом популяр­ном экза­мене.

Ти­пич­ный про­цесс иссле­дова­ния любой машины раз­делен на нес­коль­ко эта­пов.

  • Ска­ниро­вание и сбор информа­ции (Scanning).
  • Оп­ределе­ние уяз­вимос­тей (Enumeration).
  • Экс­плу­ата­ция уяз­вимос­тей (Exploitation).
  • По­выше­ние при­виле­гий (Privilege Escalation).
  • Пос­тэкс­плу­ата­ция (Post Exploitation).
  • Очис­тка сле­дов (House Cleaning).
  • Прой­дем­ся по ним, что­бы понять, как эффектив­нее дей­ство­вать на каж­дом.

     

    Сканирование и сбор информации

    Пер­вое, что тебе необ­ходимо сде­лать, — это при­вес­ти иссле­дуемую машину в исходное сос­тояние. Для это­го во всех сер­висах есть опция Revert или Reset. Собирать информа­цию, не вер­нув машину в исходное сос­тояние, не сто­ит: там могут не най­тись нуж­ные фай­лы или в обще­дос­тупной пап­ке на FTP уже может лежать готовый экс­пло­ит, что испортит тебе все удо­воль­ствие и воз­можность получить опыт.

    Что еще хуже, некото­рые экс­пло­иты вро­де перепол­нения буфера могут сра­ботать ров­но один раз, и, ска­нируя такую машину, ты прос­то не най­дешь нуж­ный сер­вис. Поэто­му всег­да воз­вра­щаем машину в исходное сос­тояние! В HTB ста­рают­ся не делать таких сер­висов, но там тоже мож­но про­голо­совать за Revert или переза­пус­тить машину самому, если у тебя есть ста­тус VIP.

     

    Сканирование портов

    Спо­ры о пра­виль­ных спо­собах ска­ниро­вания пор­тов не ути­хают никог­да. Сущес­тву­ет мно­го раз­ных скрип­тов вро­де Autorecon, nmapAutomator, они очень полез­ные, но я не рекомен­дую начинать с них. Почему? Всег­да луч­ше понять, как работа­ет та или иная ути­лита, а не сле­по полагать­ся на нее. Поэто­му луч­ше ска­чай их и пос­мотри исходный код, а мы будем исполь­зовать ста­рый доб­рый Nmap.

    Для начала мож­но прой­тись быс­трым ска­ниро­вани­ем популяр­ных пор­тов:

    $ nmap x.x.x.x -v --top-ports 10 –open

    Ес­ли вдруг Nmap воз­вра­щает ошиб­ку о недос­тупнос­ти хос­та, поп­робуй опцию -Pn. Пока ты раз­мышля­ешь над получен­ной информа­цией, мож­но запус­тить пол­ное ска­ниро­вание всех TCP-пор­тов.

    $ nmap x.x.x.x -p- -v -sV --reason

    Не забудь, сущес­тву­ют еще пор­ты UDP! Коман­дную стро­ку для их ска­ниро­вания я оставлю тебе в качес­тве домаш­него задания.

    info

    Пом­ни: даже некото­рые лабора­тор­ные машины могут иметь защиту от ска­ниро­вания. Если вдруг в середи­не ска­ниро­вания все вне­зап­но прер­валось или завис­ло, поиг­рай с опци­ями Nmap. Нап­ример, уве­личь вре­мя меж­ду про­бами пор­тов и умень­ши количес­тво одновре­мен­ных проб.

    В резуль­тате всех этих дей­ствий у тебя будет информа­ция о дос­тупных на машине пор­тах.

    Ре­зуль­тат ска­ниро­вания пор­тов

    Не бро­сай­ся сра­зу же искать экс­пло­ит для VMware или Samba! Ты совер­шишь самую боль­шую ошиб­ку и рис­куешь попасть в так называ­емые кро­личьи норы (Rabbit Holes). Тупико­вые мес­та, которых страш­но боят­ся все на экза­мене OSCP: ты можешь пот­ратить часы в попыт­ках сло­мать, нап­ример, WordPress и в кон­це не добить­ся резуль­тата, пос­коль­ку уяз­вимость была в дру­гом сер­висе, но ты до него прос­то не дошел.

    Твоя задача — соб­рать весь спи­сок откры­тых пор­тов и воз­можных сер­висов, которые работа­ют за ними. Пос­ле это­го перехо­дим к даль­нейше­му сбо­ру информа­ции.

    Как улуч­шить свои навыки ска­ниро­вания? Читай рай­тапы, смот­ри, какие в них исполь­зуют­ся инс­тру­мен­ты, и попол­няй свою копил­ку. Рекомен­дую завес­ти отдель­ный репози­торий с докумен­тами и там пла­номер­но соз­давать собс­твен­ную методи­ку. У меня в раз­деле «ска­ниро­вание пор­тов» сей­час око­ло десят­ка раз­ных спо­собов ска­ниро­вания (Nmap, masscan, скрип­ты и дру­гие).

    Осо­бо обра­ти вни­мание на любые пор­ты, которые Nmap не смог однознач­но иден­тифици­ровать. Так­же — пор­ты, о которых ты не знал рань­ше, и на при­выч­ные вещи вро­де веб‑сер­веров и FTP на нес­тандар­тных пор­тах вро­де 9000, 5000 и дру­гих. Обыч­но это пер­спек­тивные с точ­ки зре­ния экс­плу­ата­ции сер­висы, которые прос­то хотели спря­тать от быс­тро­го ска­ниро­вания. Имен­но поэто­му я рекомен­дую всег­да про­водить пол­ное ска­ниро­вание всех пор­тов TCP и быс­трое — базовых UDP. Мне встре­чались машины, где уяз­вимый сер­вис был спря­тан в UDP.

     

    Сервисы

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

    21-й порт

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

    Как вид­но, порт 21 обыч­но отве­чает за FTP, но за ним может находить­ся любой из извес­тных тебе FTP-сер­висов, а может и не FTP вооб­ще. Вдруг какой‑то хит­рый админ переве­сил туда SSH. Поэто­му пер­вое, что я всег­да делаю, — про­бую под­клю­чить­ся к сер­вису с помощью netcat.

    $ nc -nv x.x.x.x 21

    Ча­ще все­го тебя встре­тит бан­нер FTP-сер­вера, вро­де такого.

    При­мер отве­та FTP-сер­вера

    Но если уви­дишь там ответ SSH или ино­го сер­виса, прос­то запиши это и перехо­ди к соот­ветс­тву­юще­му раз­делу, что­бы понять, что еще отту­да мож­но добыть!

    На что сле­дует обра­тить вни­мание при иссле­дова­нии FTP:

    • наз­вание прог­раммы‑сер­вера и ее вер­сия;
    • раз­решен ли ано­ним­ный дос­туп;
    • нет ли чего‑то инте­рес­ного в пап­ках на сер­вере;
    • не раз­решена ли запись в какую‑нибудь пап­ку;
    • есть ли уяз­вимос­ти в этой вер­сии сер­вера.
  • Вер­сию FTP тебе покажет nc, либо мож­но поп­робовать узнать ее через Nmap:
  • $ nmap -A -v x.x.x.x -p21

    В сети есть мно­жес­тво прог­рамм, которые пыта­ются эвристи­чес­ки опре­делить вер­сию FTP-сер­вера, можешь исполь­зовать их.

  • Те­перь под­клю­чись к сер­веру стан­дар­тным FTP-кли­ентом и про­верь ано­ним­ный дос­туп. Обыч­но это guest, ftp, anonymous. Если получи­лось — отлично. Если нет, не отча­ивай­ся, воз­можно, ты най­дешь учет­ные дан­ные поз­же или сер­вис вооб­ще не понадо­бит­ся.
  • Ес­ли уда­лось попасть на FTP, осмотрись. Это может быть прос­то пус­тая пап­ка, а может каталог веб‑сер­вера, запиши это. Иног­да находят­ся какие‑нибудь фай­лы — скла­дируй их для даль­нейше­го изу­чения. Кста­ти, самое вре­мя най­ти и записать себе коман­ду для рекур­сивно­го ска­чива­ния всех фай­лов с FTP! Ты же не собира­ешь­ся пос­тоян­но делать это по одно­му?
  • Про­верь, можешь ли ты записать в пап­ку хоть что‑то. Удоб­но сде­лать это коман­дой put. Но пом­ни, иног­да сер­вер дает пра­во записи, но не уда­ления! Не кла­ди туда ничего цен­ного, лабора­тор­ные машины дос­тупны всем.
  • Вре­мя поис­кать уяз­вимос­ти. Самый прос­той и раз­решен­ный в OSCP спо­соб — исполь­зовать скрип­товые воз­можнос­ти Nmap. С них сто­ит начинать всег­да незави­симо от того, какой порт ты изу­чаешь. Давай узна­ем, какие есть скрип­ты для FTP, и запус­тим их все сра­зу. (Кста­ти, так за тебя дела­ет nmapAutomator.)
  • $ ls -la /usr/share/nmap/scripts/ftp*$ nmap --script ftp-* -p21 x.x.x.x

    Наш­лись воз­можные уяз­вимос­ти? Отлично! Запиши их себе, но не бро­сай­ся сра­зу же про­бовать! У нас еще столь­ко неп­роверен­ных пор­тов. Ты же не хочешь попасть в кро­личью нору? Но если боль­ше ничего не наш­лось — тоже не беда! В раз­деле «Поиск уяз­вимос­тей» я рас­ска­жу, где еще их мож­но поис­кать.

    Вот неболь­шой спи­сок того, что мне встре­чалось на FTP в лабора­тори­ях и HTB.

    • FTP-сер­вер, уяз­вимый к перепол­нению буфера.
    • Дос­туп к пол­ному содер­жимому дис­ка C, где уда­лось най­ти кон­фигура­цион­ные фай­лы с логина­ми к дру­гому сер­вису.
    • Воз­можность записать файл в дирек­торию веб‑сер­вера для даль­нейше­го выпол­нения кода.
    • Directory Traversal (воз­можность читать фай­лы не толь­ко из пап­ки FTP-сер­вера).
    • И еще мно­гое дру­гое! Не забывай дописы­вать к сво­ей методи­ке удач­ные ходы.

    Источник: xakep.ru

    Ответить

    Ваш адрес email не будет опубликован. Обязательные поля помечены *