Анализ данных для поддельного DNS
Удаленный сервер имен, на который у меня нет привилегий, периодически отвечает поддельными адресами. Я хочу следить за этим сервером и собирать данные по поддельным ответам для анализа. Как мне это сделать?
По сути, я хочу запросить известный домен, сравнить его с известным IP-адресом и записать данные. Я намереваюсь визуализировать количество времени, в течение которого сервер отвечает поддельным против законного, а также шаблоны этого поведения.
Я надеюсь, что есть инструменты, доступные для этого, но я мог бы сделать некоторые Python / SQL, если это необходимо. Пожалуйста, порекомендуйте.
Пример:
Запрос A record для google.com вернет 195.22.26.248.
Очевидно, не адрес Google
2 ответа
Я предполагаю, что вы знаете, о чем говорите, когда говорите, что это один DNS-сервер. Я скептически отношусь к тому, что вы не поделились своей методологией определения этого, но мой ответ будет восприниматься как данность того, что эта информация является точной.
Обычно вы выполняете запрос, смотрите наблюдаемый TTL и делаете запрос снова, когда истекает срок действия TTL. Вы продолжите это, пока не достигнете заданного периода выборки, и сравните хорошие ответы с плохими.
К сожалению, рабочее слово здесь "нормально". Вы ищете детерминированный ответ, но его трудно найти, когда сервер взломан, и в большинстве случаев вам приходится выбрасывать логику в окно, пока вы не узнаете специфику методологии эксплойтов.
- Учитывая ваш другой вопрос о безопасности. SE, более вероятно, что само серверное программное обеспечение было скомпрометировано, чем это было результатом бомбардировки поддельными ответами.
- Бомбардировка поддельных пакетов всегда срабатывает в TTL, но другие методы могут непредсказуемо изменить ответ до истечения срока действия окна TTL. В последнем случае трудно сказать, произошло ли изменение из-за обновления или нет, если только вы не уверены на 100%, что имеете дело с одним сервером, а не с фермой за VIP. В последнем случае TTL будет изменяться довольно последовательно.
Короче говоря, вы много работаете над проблемой, которая не принадлежит вам, и, поскольку вы не владеете ею, у вас есть очень мало способов убедиться, что собранная вами информация дает полезный вывод. (кроме академического упражнения по соотношению "сырое благо: плохие ответы с течением времени", которое превратило бы этот вопрос и ответ в один из тех вопросов "дай мне код", которые мы не одобряем на этом сайте SE)
Ты можешь использовать dig www.example.com
В bash на большинстве систем Linux для поиска DNS выходные данные могут быть настроены в зависимости от количества деталей, которые вы хотите. Вы можете сохранить известные хорошие результаты в файл, а затем сравнить результаты, используя diff
, Регистрация может быть выполнена путем извлечения нужной информации из dig
вывод, а затем вы можете сохранить его в любом формате, который вы хотите, используя файл журнала или базу данных. С помощью date +%s
Вы можете получить метку времени Unix для добавления в журнал, что делает выбор временного диапазона в журналах вопросом целочисленного сравнения по одному значению.