Практика создания веб-сканера уязвимостей на примере сканера из [ // XSSware]

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0

Авторство: hackeryaroslav​

Источник: xss.is​


Введение

Всем привет. По мере того, как мы создаем все более сложные веб-приложения, потенциал для возникновения брешей в безопасности растет в геометрической прогрессии. Для борьбы с этим постоянно меняющимся ландшафтом угроз сканеры веб-уязвимостей стали незаменимыми инструментами как для специалистов по безопасности, так и для разработчиков. Но что нужно для создания такого сканера? Каковы технические соображения, философские основы и последствия? Давайте разберемся, используя предоставленный код в качестве отправной точки. Хоть и на рынке есть куча подобного, внедрение определенных функций и капля уникальности может сыграть огромную роль в выявлении ранее не найденных уязвимостей. Разберем на примере сканера из темы "ИИ в Пентесте: Автоматизированный Веб-Сканер с Интеграцией ИИ". Не претендую на самый лучший сканер, но подчеркну, что он является довольно эффективным, гибко настраиваемым и следующим последним трендам, а именно ИИ интеграции.

Также, хочется поблагодарить admin и Angel Drainer за возможность представить подобные проекты публике.

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


А почему сканеры с ИИ только набирают обороту и на что будут способны продвинутые сканеры с ИИ?

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

Во-первых, интеграция ИИ в сканеры уязвимостей позволяет значительно повысить точность обнаружения уязвимостей. Алгоритмы машинного обучения и глубокого обучения способны анализировать большие объемы данных и выявлять скрытые паттерны, что делает обнаружение уязвимостей более надежным и эффективным.

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

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

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

Это только задумки, но давайте взглянем на реальные проблемы его реализации

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

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

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

Коммерческие сканеры против опенсорсных: битва за лучший инструмент

Также нужно поговорить о вечном споре - стоит ли платить за дорогущие коммерческие сканеры уязвимостей или же полагаться на бесплатные опенсорсные решения? Оба варианта имеют свои плюсы и минусы, так что давайте разберемся (ну вы же не будете качать кряки, уважая доходы компаний, верно?😁)

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

Теперь опенсорс. Главное их преимущество - бесплатность! Многие инструменты, такие как Nmap, Nikto, Nuclei и другие, являются полностью открытыми и бесплатными. Более того, сообщество активно их развивает и добавляет новый функционал. Однако, у опенсорса есть и минусы - отсутствие гарантированной поддержки, возможные проблемы с безопасностью и порой устаревшие возможности.

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

Технический ландшафт: симфония инструментов и методов

По своей сути сканер веб-уязвимостей представляет собой оркестр инструментов и методов, работающих в гармонии. Предоставленный код прекрасно иллюстрирует это, интегрируя популярные инструменты для тестирования на проникновение, такие как Nmap, Nuclei, Sqlmap, SSLScan и DNSRecon. Каждый инструмент играет определенную роль:

  • Nmap: зондирует открытые порты и службы, предоставляя информацию о том, какие сервисы работают на целевой системе.
  • Nuclei: ищет известные уязвимости, используя базу данных шаблонов, которые соответствуют сигнатурам уязвимостей.
  • Sqlmap: сосредоточен на недостатках SQL-инъекций, пытаясь внедрить вредоносный код в SQL-запросы, выполняемые веб-приложением.
  • SSLScan: анализирует конфигурации SSL/TLS, проверяя наличие слабых шифров, сертификатов и других уязвимостей.
  • DNSRecon: изучает записи DNS, выявляя потенциальные поддомены, которые могут быть использованы злоумышленниками.
Такой модульный подход обеспечивает всесторонний охват потенциальных векторов атак. Инструменты могут менятся по мере обновлений, как например некоторый инструменты были заменены на ZAP, но это не значит, что только они выполняются в качестве сканирования. Плюс многих опен сорсных сканеров в том, что они очень гибки настраиваемые. На примере сканера из конкурса, можно легко поменять их, имея даже небольшой опыт работы с кодом.

Часть кода:
Python: Скопировать в буфер обмена
Код:
TOOLS = {
    "nmap": {"cmd": "nmap", "args": ["-T4", "-F"], "output": "nmap.txt"},
    "Nuclei": {
        "cmd": "nuclei",
        "args": ["-t", "cves", "-o", "nuclei.txt", "-u"],
        "output": "nuclei.txt",
    },
    "ZAP": {
        "cmd": "zap.sh",
        "args": ["-cmd", "-quickout", "zap.txt"],
        "output": "zap.txt",
    },
    "sslscan": {"cmd": "sslscan", "args": ["--no-failed"], "output": "sslscan.txt"},
    "dnsrecon": {"cmd": "dnsrecon", "args": ["-d"], "output": "dnsrecon.txt"},
}


В этом фрагменте кода определен словарь TOOLS, который содержит информацию о каждом инструменте, используемом сканером. Для каждого инструмента указаны его команда (cmd), аргументы (args) и имя выходного файла (output). Такая структура позволяет легко добавлять новые инструменты и настраивать существующие.

Но технический ландшафт выходит за рамки простого выбора инструментов. Сканер поддерживает следующие аспекты:

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

Человеческий элемент: ИИ и будущее сканирования уязвимостей

И так, проект использует Llama AI, что это?


Llama AI - это новая мощная языковая модель искусственного интеллекта с открытым исходным кодом, разработанная компанией Meta (Meta AI). То, что делает её уникальной и выделяет из остальных моделей ИИ на рынке - это её открытый исходный код.
Llama AI - первая столь масштабная и производительная модель ИИ с полностью открытым исходным кодом в индустрии. Это означает, что любой желающий может получить доступ к её коду, изучать его, модифицировать и настраивать под свои нужды. В отличие от чат-моделей вроде ChatGPT от OpenAI, которые являются проприетарными "чёрными ящиками", Llama AI полностью открыта и прозрачна.

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

  • Улучшенный анализ: ИИ может просеивать огромные объемы данных и выявлять паттерны, которые люди могут упустить, что приводит к более полным и точным оценкам уязвимостей.
  • Практические идеи: ИИ может не просто выявлять уязвимости, но и предоставлять практические идеи относительно стратегий устранения, приоритезации и потенциальных сценариев атак.
  • Адаптивное обучение: Модели ИИ могут непрерывно обучаться на новых данных и адаптироваться к изменяющемуся ландшафту угроз, обеспечивая эффективность сканеров с течением времени.
Python: Скопировать в буфер обмена
Код:
def combine_reports_and_ask_gpt(findings):
    # Combine the reports from the vulnerability scan and ask the AI for recommendations
    api_key = os.getenv("LLAMA_API_KEY")

    if not api_key:
        api_key = input("Enter your Llama API key: ")
        # Save the API key in the .env file
        with open(".env", "a") as env_file:
            env_file.write(f"LLAMA_API_KEY={api_key}\n")
        os.environ.update(dotenv_values(".env"))
    llama = ConsultantAI(api_key)
    vulnerability_summary = ""
    for tool, issues in findings.items():
        vulnerability_summary += f"\n{tool.upper()} findings:"
        if issues:
            vulnerability_summary += "\nVulnerabilities detected:"
            for issue in issues:
                vulnerability_summary += f"\n - {issue}"
        else:
            vulnerability_summary += "\nNo vulnerabilities detected"

    default_prompt = """
    You are a penetration tester and security consultant. The vulnerability scan on [TARGET] has revealed the following findings:

    [TOOL] findings:
    - [VULNERABILITY_DESCRIPTION]
    - [ANOTHER_VULNERABILITY_DESCRIPTION]

    ...

    No vulnerabilities detected.

    Analyze the identified vulnerabilities and recommend possible variants or scenarios that might lead to additional security issues in the future. Provide insights into potential attack vectors, exploitation techniques, or misconfigurations that could be exploited by malicious actors.

    Consider the current security posture and suggest improvements to mitigate the identified vulnerabilities. Your recommendations should focus on enhancing the overall resilience of the target system.

    [USER_PROMPT]
    """

    prompt = (
        default_prompt.replace("[TOOL]", tool.upper())
        .replace("[TARGET]", target)
        .replace("[VULNERABILITY_DESCRIPTION]", "Sample vulnerability description")
        .replace(
            "[ANOTHER_VULNERABILITY_DESCRIPTION]",
            "Another sample vulnerability description",
        )
        .replace("[USER_PROMPT]", "")
    )

    if selected_profile:
        prompt += vulnerability_summary + selected_profile.prompt_modifier
    else:
        prompt += vulnerability_summary

    api_request_json = {
        "messages": [{"role": "user", "content": prompt}],
        "stream": False,
    }
    try:
        response = llama.generate_solution(api_request_json)
        return response
    except Exception as e:
        print("Error interacting with Llama API:", e)
        return "AI response could not be obtained due to an error."


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

Python: Скопировать в буфер обмена
Код:
class AIProfile:
    def __init__(self, name, prompt_modifier):
        self.name = name
        self.prompt_modifier = prompt_modifier


friendly_mentor_profile = AIProfile(
    "friendly_mentor",
    "You are a seasoned yet amicable cybersecurity mentor. You explain vulnerabilities and mitigations in a simple, easy-to-grasp manner, like guiding a mentee. Your warmth shows this is for learning, not lecturing.",
)

special_agent_profile = AIProfile(
    "special_agent",
    "You are a cyber intelligence special agent briefing high-level government officials on security threats. You analyze methodically, profiling adversary tradecraft, capabilities, and recommended counter-operations for the targeted organization.",
)

hacker_guru_profile = AIProfile(
    "hacker_guru",
    "You're the zen-like hacker guru, seeing vulnerabilities as puzzles to solve over cups of green tea. For each finding, you philosophize on root causes and ponderously guide the grasshopper to patches, wisdom, and improved security hygiene.",
)

paranoid_expert_profile = AIProfile(
    "paranoid_expert",
    "You're the paranoid cybersecurity expert seeing threats everywhere. Your analysis wildly speculates possible worst-case scenarios from the findings, while your mitigation advice involves heavy-handed measures like air-gapping, encryption, threat hunting operations centers, and resisting use of all technology.",
)


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

Я мог посвятить всю статью разбором кода, но лишь отметил его главные преимущества с кусочками кода. Много интересного можно увидеть, только взглянув на полностью весь код, думаю знаю, где вы можете его найти (https://xss.is/threads/106193/) и его последнее обновление (v1.7) - https://xss.is/threads/106193/post-777853

Сложная задача создания сканеров

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

Риски с интеграцией ИИ

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


Про тему сканеров глазами пентестера. Ловушка, в которую попадают новички.

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

Многие разводят панику, что ИИ может заменить человека как программиста, специалиста кибербезопасности и других айти проффеский. Отчасти, это правда. В этой и есть и хорошая сторона. Давайте объясню.

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


Заключение

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

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

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