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

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

hacker_frei

https://t.me/hacker_frei

Евгений Грязнов

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

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

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

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

INFO

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

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

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

Прой­дем­ся по ним, что­бы понять, как эффектив­нее дей­ство­вать на каж­дом.

СКАНИРОВАНИЕ И СБОР ИНФОРМАЦИИ

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

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

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

Спо­ры о пра­виль­ных спо­собах ска­ниро­вания пор­тов не ути­хают никог­да. Сущес­тву­ет мно­го раз­ных скрип­тов вро­де AutoreconnmapAutomator, они очень полез­ные, но я не рекомен­дую начинать с них. Почему? Всег­да луч­ше понять, как работа­ет та или иная ути­лита, а не сле­по полагать­ся на нее. Поэто­му луч­ше ска­чай их и пос­мотри исходный код, а мы будем исполь­зовать ста­рый доб­рый 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:

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

$ nmap -A -v x.x.x.x -p21

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

  1. Те­перь под­клю­чись к сер­веру стан­дар­тным FTP-кли­ентом и про­верь ано­ним­ный дос­туп. Обыч­но это guest, ftp, anonymous. Если получи­лось — отлично. Если нет, не отча­ивай­ся, воз­можно, ты най­дешь учет­ные дан­ные поз­же или сер­вис вооб­ще не понадо­бит­ся.
  2. Ес­ли уда­лось попасть на FTP, осмотрись. Это может быть прос­то пус­тая пап­ка, а может каталог веб‑сер­вера, запиши это. Иног­да находят­ся какие‑нибудь фай­лы — скла­дируй их для даль­нейше­го изу­чения. Кста­ти, самое вре­мя най­ти и записать себе коман­ду для рекур­сивно­го ска­чива­ния всех фай­лов с FTP! Ты же не собира­ешь­ся пос­тоян­но делать это по одно­му?
  3. Про­верь, можешь ли ты записать в пап­ку хоть что‑то. Удоб­но сде­лать это коман­дой put. Но пом­ни, иног­да сер­вер дает пра­во записи, но не уда­ления! Не кла­ди туда ничего цен­ного, лабора­тор­ные машины дос­тупны всем.
  4. Вре­мя поис­кать уяз­вимос­ти. Самый прос­той и раз­решен­ный в 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-сер­вера).
  • И еще мно­гое дру­гое! Не забывай дописы­вать к сво­ей методи­ке удач­ные ходы.

22-й порт

Обыч­но это порт SSH, но мы же не доверя­ем чис­лам! Про­верь его с помощью nc.

$ nc -nv x.x.x.x 22

При­мер отве­та SSH

От­лично, это точ­но SSH! Видишь вер­сию пакета? OpenSSH_8.2p1. Даль­ше сло­ва Ubuntu-4ubuntu0.1 говорят нам о том, что это, ско­рее все­го, Ubuntu. Поис­кав в Google «openssh 8.2p1 4ubuntu0.1 version», мы можем с боль­шой долей уве­рен­ности ска­зать, что это вер­сия Focal 20.04. Запиши эту информа­цию, воз­можно, она при­годит­ся.

Те­перь нуж­но получить отпе­чаток (fingerprint) для SSH.

$ ssh root@x.x.x.x

Для чего нам эта информа­ция? Нап­ример, пос­мотреть, нет ли для это­го отпе­чат­ка извес­тно­го при­ват­ного клю­ча SSH. Обя­затель­но про­читай об уяз­вимых клю­чах SSH.

Те­перь оста­лось самое инте­рес­ное и слож­ное. Научись понимать рас­ширен­ный вывод SSH. Для это­го прос­то запус­ти SSH с клю­чом -v.

$ ssh root@x.x.x.x -v

Сна­чала ты можешь быть шокиро­ван раз­мером появив­шегося тек­ста, но он край­не важен! Изу­чи его. Почему этот так важ­но? В лабора­тории и HTB очень час­то встре­чались машины со ста­рым SSH-сер­вером, к которо­му отка­зыва­ется под­клю­чать­ся све­жий Kali, так как он будет счи­тать алго­ритм шиф­рования уста­рев­шим и не отда­вать ключ через SSH, а сер­вер, выпущен­ный в 2014 году, счи­тает его впол­не безопас­ным. Тог­да без опции -v ты прос­то получишь отказ в дос­тупе, но никог­да не узна­ешь почему, а дос­таточ­но было прос­то добавить пару опций в стро­ку под­клю­чения. С таким я тоже стал­кивал­ся, и это один из популяр­ных воп­росов на форуме сту­ден­тов. В общем, вни­матель­но изу­чи вывод SSH с клю­чом -v и обя­затель­но в нем раз­берись!

Ес­ли у тебя есть спи­сок логинов и паролей, можешь поп­робовать подоб­рать их, нап­ример, прог­раммой Hydra. Как и всег­да, запиши эти зна­ния и опро­буй их в сво­ей методи­ке! И если нашел в чьем‑то рай­тапе инте­рес­ные спо­собы работы с SSH, тоже обя­затель­но раз­берись и добавь их себе!

Что инте­рес­ного встре­чалось мне при работе с SSH?

  • Те самые «пло­хие» клю­чи SSH, которые мож­но опре­делить и подоб­рать по отпе­чат­ку.
  • Уяз­вимые клю­чи, которые мож­но подоб­рать по отпе­чат­ку пуб­лично­го клю­ча.
  • Уяз­вимость в ран­них вер­сиях SSH, поз­воляв­шая перечис­лять локаль­ных поль­зовате­лей.
  • Не­сов­падение вер­сий кли­ента и сер­вера, тре­бующее спе­циаль­ных фла­гов для работы.
  • Рас­кры­тие точ­ной информа­ции о вер­сии и ОС сер­вера, поз­воля­ющее про­изво­дить даль­нейшее иссле­дова­ние фай­лов через path traversal.

80-й порт

Са­мый популяр­ный и самый без­гра­нич­ный для иссле­дова­ния порт — имен­но на нем живут все веб‑сер­висы. Но мы пока не будем даже запус­кать бра­узер, а методич­но про­верим всю дос­тупную информа­цию!

Тут нам уже не поможет nc. Но я все рав­но рекомен­дую вна­чале запус­тить его.

$ nc -nv x.x.x.x 80

Вдруг это пря­чет­ся SSH-сер­вер на 80-м пор­те. Даль­ше про­верь заголов­ки сер­вера:

$ curl -I x.x.x.x

Там навер­няка может най­тись тип сер­вера и его вер­сия, вер­сия PHP, если он исполь­зует­ся, и дру­гая очень полез­ная информа­ция.

Ин­форма­ция о сер­вере

Как видишь, на нашем при­мере сер­вер защища­ет сер­вис защиты от DDOS-атак Qrator, а стро­ка Link: <https://xakep.ru/wp-json/>; rel=https://api.w.org/ говорит нам, что сайт, ско­рее все­го, работа­ет на WordPress.

Приш­ло вре­мя заг­лянуть в исходный код стра­ницы! (Опция -L поз­воля­ет кор­рек­тно обра­баты­вать редирек­ты сер­вера.)

$ curl -i -L x.x.x.x

Здесь ты можешь поп­ракти­ковать­ся в чте­нии HTML и поис­ке с помощью grep и регуляр­ных выраже­ний. Что сле­дует искать и уметь опре­делять?

  • Вер­сию CMS и ее наз­вание.
  • Шаб­лониза­тор, на котором может быть пос­тро­ен сайт.
  • Лю­бые ком­мента­рии и вре­мен­но скры­тые ссыл­ки на дру­гие сай­ты или раз­делы.
  • Ссыл­ки на дру­гие под­домены (осо­бен­но акту­аль­но для HTB).
  • Вер­сии под­клю­чаемых биб­лиотек (иног­да поз­воля­ют кос­венно опре­делить вер­сию CMS).

Те­перь наконец запус­ти бра­узер и пос­мотри, нет ли чего инте­рес­ного. Это самая твор­ческая часть, и тут как раз нуж­но баналь­но набить руку. Читай мно­го рай­тапов и запоми­най, что и как дела­ют люди. Что нас может инте­ресо­вать здесь:

  • есть ли фай­лы robots.txt или sitemap.xml;
  • есть ли фор­мы обратной свя­зи или фор­мы аутен­тифика­ции;
  • есть ли зак­рытые раз­делы, вари­анты регис­тра­ции или вос­ста­нов­ления пароля.

По­ищи исходный код CMS в интерне­те. Очень час­то на GitHub мож­но най­ти нуж­ную тебе CMS и понять, на какие фай­лы сто­ит обра­тить вни­мание (нап­ример, на кон­фиги), там же ты най­дешь спис­ки исправ­ленных уяз­вимос­тей.

Я исполь­зую очень удоб­ный пла­гин для Firefox Wappalyzer. Он поз­воля­ет опре­делять исполь­зуемые фрей­мвор­ки и дру­гие осо­бен­ности веб‑сер­вера.

В целом спи­сок тут прак­тичес­ки бес­конеч­ный и тянет на боль­шой месяч­ный курс или десяток ста­тей.

WWW

Обя­затель­но пос­мотри вот на эти чек‑лис­ты:

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

Ни­чего инте­рес­ного не наш­лось? Самое вре­мя взять сло­варь и попытать­ся поис­кать фай­лы и скры­тые дирек­тории. Тут мож­но исполь­зовать любые любимые инс­тру­мен­ты: niktoGobusterDIRB.

$ gobuster dir -t 128 -u http://x.x.x.x/ -w /usr/share/seclists/Discovery/Web-Content/common.txt -s '200,204,301,302,307,403,500' -e

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

Что инте­рес­ного мне встре­чалось в веб‑сер­висах?

  • SQL и коман­дные инъ­екции.
  • Ин­форма­ция о датах рож­дения, поз­воляв­шая подоб­рать пароль или отве­тить на сек­ретный воп­рос в фор­ме вос­ста­нов­ления пароля.
  • XSS, поз­воля­ющая получить админ­ские сес­сии.
  • Ошиб­ки нас­трой­ки веб‑сер­вера.
  • Скрип­ты раз­работ­чика, которые вмес­те с path traversal поз­воляли най­ти фай­лы с пароля­ми и ска­чать их.
  • И мно­гое, мно­гое дру­гое.

Для XSS, обхо­да филь­тра­ции команд и дру­гих инъ­екций я очень рекомен­дую один из самых боль­ших сбор­ников полез­ных наг­рузок.

Порты 139 и 445

Это извес­тная тебе Samba. Для работы с ней сущес­тву­ет мно­жес­тво инс­тру­мен­тов, я перечис­лю лишь некото­рые из них.

$ enum4linux x.x.x.x

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

По­лучить спи­сок дос­тупных папок мож­но такой коман­дой:

$ smbclient -L //x.x.x.x -N

Ес­ли тебе нуж­но рекур­сивно пос­мотреть все пап­ки, то пиши

$ smbclient //HOST/PATH -c 'recurse;ls' PASS -U USER

Про­верь наличие извес­тных уяз­вимос­тей в SMB с помощью Nmap. EternalBlue — все еще мощ­ный инс­тру­мент.

$ nmap --script smb-vuln* -p139,445 -T4 -Pn 10.11.1.111

Вот как запус­тить уда­лен­но коман­ду с помощью SMB:

$ winexe -U username //10.11.1.111 "cmd.exe" –system

Со­веты здесь в целом похожи на советы из раз­дела о FTP. Выяс­ни, какие ресур­сы тебе дос­тупны, какие поль­зовате­ли есть на сер­вере (могут при­годить­ся при перебо­ре), нет ли полез­ной информа­ции в дос­тупных пап­ках. И, как всег­да, вни­матель­но читай рай­тапы, под­смат­ривай исполь­зуемые ути­литы, раз­бирай­ся в их работе и заноси в свою под­борку. Обя­затель­но ста­рай­ся выяс­нить, почему была исполь­зована одна ути­лита, а не дру­гая.

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

ПОИСК УЯЗВИМОСТЕЙ

Те­перь, ког­да у тебя есть спи­сок исполь­зуемо­го ПО с вер­сиями, самое вре­мя поис­кать извес­тные уяз­вимос­ти и готовые экс­пло­иты. В лабора­тории OSCP тебе вряд ли при­дет­ся писать собс­твен­ные экс­пло­иты, чаще все­го нуж­но мак­симум поп­равить готовые. А вот слож­ные машины HTB впол­не могут тре­бовать руч­ного написа­ния экс­пло­ита.

Где же искать экс­пло­иты? Пом­ни, что не на все уяз­вимос­ти есть готовые экс­пло­иты и не все уяз­вимость поз­воля­ют их написать. Поэто­му сто­ит начать с самой боль­шой базы дан­ных уяз­вимос­тей cvedetails.com.

Там есть поиск по вен­дору, прог­рамме, вер­сиям и дру­гим кри­тери­ям. Мой тебе совет: никог­да не прев­ращай­ся в скрипт‑кид­ди, который спо­собен толь­ко запус­тить прог­рамму и ждать резуль­тата. Про­читай CVE, пой­ми, почему та или иная прог­рамма уяз­вима. Если есть экс­пло­ит, про­верь, тре­бует ли он ком­пиляции. Можешь ли ты его соб­рать. Будет ли он работать на тво­ей сис­теме. Какие у него есть началь­ные усло­вия.

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

Где сто­ит брать экс­пло­иты? Самая извес­тная база экс­пло­итов — это, конеч­но, exploit-db.com и ее кон­соль­ный вари­ант searchsploit. Раз­мещен­ные там экс­пло­иты дос­таточ­но безопас­ны для исполь­зования. Но никог­да не огра­ничи­вай­ся ей. Поищи в Google «имя прог­раммы вер­сия exploit». Очень час­то мож­но най­ти инте­рес­ные све­жие экс­пло­иты.

WARNING

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

Нес­коль­ко полез­ных советов о поис­ке экс­пло­итов и работе с ними.

  1. На­учись в совер­шенс­тве вла­деть searchsploit. Можешь пот­рениро­вать­ся на сер­вере Apache: научись показы­вать толь­ко экс­пло­иты уда­лен­ного дос­тупа, а не выпол­нения DOS-атак, раз­дели выдачу по Apache httpd от Apache Tomcat.
  2. Поп­робуй поис­кать экс­пло­иты на GitHub с помощью Google. Пой­ми, как это луч­ше делать и как пра­виль­но филь­тро­вать резуль­таты.
  3. На­учись собирать экс­пло­иты не толь­ко под x86_64, но и под чис­тый i386. Иног­да такое может очень при­годить­ся.
  4. На­учись искать и исполь­зовать экс­пло­иты в Metasploit.

ПОВЫШЕНИЕ ПРИВИЛЕГИЙ

Этот раз­дел впол­не бы потянул на нес­коль­ко ста­тей, поэто­му я прос­то дам тебе ссыл­ки на отличные статьи о по­луче­нии root-дос­тупа и прав адми­нис­тра­тора в Windows.

От себя добав­лю нес­коль­ко полез­ных советов и трю­ков, встре­чав­шихся мне в раз­ных ситу­ациях.

  • Инс­тру­мен­ты linPEAS и подоб­ные им полез­ны, но на экза­мена­цион­ных машинах OSCP они не находят абсо­лют­но ничего! Раз­берись, как они работа­ют, и наб­росай себе спи­сок нуж­ных команд вро­де поис­ка SUID.
  • Пос­тавь и вни­матель­но изу­чи чис­тые Windows и Linux. Тебе нуж­но понимать, какие сер­висы есть в сис­теме пос­ле уста­нов­ки, а какие туда мог­ли добавить.
  • Уви­дел неиз­вес­тную тебе прог­рамму? Обя­затель­но запиши! Очень час­то через нее мож­но получить повыше­ние при­виле­гий.
  • Вни­матель­но смот­ри на стран­ности в пап­ках sbin и bin. У меня однажды там лежал eximXX (явно ука­зана вер­сия в наз­вании), хотя в спис­ке уста­нов­ленных пакетов его не было. Конеч­но же, через него мож­но было получить рут.
  • Вни­матель­но изу­чи дос­тупные изнутри пор­ты. Очень час­то внут­ри на 127.0.0.1 есть уяз­вимый или пло­хо нас­тро­енный сер­вис.

Из очень инте­рес­ного я встре­чал в лабора­тори­ях машину с Windows NT 4.0, с дос­тупом по VNC, где пароль адми­на был записан на обо­ях рабоче­го сто­ла, но был скрыт окном логина. Нуж­но было перед­винуть окно вхо­да в сис­тему и прос­то про­читать пароль «под ков­риком».

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

ПОСТЭКСПЛУАТАЦИЯ

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

Что нуж­но обя­затель­но сде­лать на этом эта­пе.

  1. Соб­рать все дос­тупные хеши паролей. Это может быть mimikatz, файл /etc/shadow, нас­трой­ки сер­висов и баз дан­ных. В общем, все пароли, до которых смо­жешь дотянуть­ся.
  2. Прос­мотри все сетевые соеди­нения. Иног­да мож­но уви­деть инте­рес­ное обще­ние с дру­гими сер­верами и най­ти пути вхо­да на них.
  3. Прос­мотри всю дос­тупную информа­цию в базах дан­ных. Там могут быть логины/пароли для дру­гих сер­веров или инте­рес­ные резер­вные копии.
  4. Собс­твен­но резер­вные копии. Не пре­неб­регай ими, и, воз­можно, най­дешь что‑нибудь важ­ное.
  5. Поль­зователь­ские пап­ки. В них могут быть те же резер­вные копии, исто­рия выпол­нения команд (нап­ример, исполь­зования пароля для под­клю­чения к БД или дру­гому сер­веру) и так далее.
  6. Не забудь о реес­тре Windows. Там могут быть пароли к VNC и дру­гим похожим сер­висам.

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

ЧИСТКА СЛЕДОВ

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

ВЫВОДЫ

Вы­вод у меня очень прос­той. Если ты хочешь стать хорошим пен­тесте­ром, вве­ди сис­темность в свои дей­ствия. Изу­чай опе­раци­онные сис­темы, сети, пос­тоян­но читай новые матери­алы и попол­няй свои чек‑лис­ты и спис­ки тех­ник. В резуль­тате все­го это­го у тебя вырабо­тает­ся опре­делен­ное чутье и понима­ние, на что же сто­ит обра­тить вни­мание при иссле­дова­нии оче­ред­ной машины. Если соберешь­ся сда­вать экза­мен, это вдвой­не при­годит­ся. Неред­ки слу­чаи, ког­да сда­ющий прос­то забывал про­верить содер­жимое robots.txt из‑за стрес­са и не брал в ито­ге машину. Хороший собс­твен­ный чек‑лист поз­воля­ет сни­зить стресс и дей­ство­вать более эффектив­но.

Пом­ни, нап­равле­ние пен­теста пос­тоян­но раз­вива­ется и появ­ляют­ся новые инте­рес­ные инс­тру­мен­ты и тех­ники. Не упус­ти их!

Читайте ещё больше платных статей бесплатно: https://t.me/hacker_frei



Report Page