...

IntercepTor программа что это

Java Interceptors (в EJB 3.0)

Представьте себе, что вы уже написали немалую часть кода приложения, и тут выясняется, что вам необходимо добавить логирование на вызов большого числа методов, или необходимо на некоторые схожие методы добавить дополнительную валидацию входных данных.
Вы можете просто переписать нужные участки кода, а можете воспользоваться появившемся в EJB 3.0 механизмом интерсепторов (interceptors).

Если интересны подробности и небольшой пример реализации прошу под кат.

Интерсепторы перехватывают вызовы методов бинов для выполнения определенных действий перед методом. Подобная концепция похожа filter chain у сервлетов.

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

public class SimpleLogger < @AroundInvoke public Object addLog(InvocationContext context)< //какая-то логика логирования return context.proceed(); >

Перехватывающий метод должен быть помечен аннотацией @AroundInvoke, позже подробнее рассмотрим его свойства.

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

public class Summ < @Interceptors (SimpleLogger.class) public double getResult()< //логика >> 

В данном примере когда кто-либо вызывает метод getResult класса Summ, то перед его выполнением сначала происходит выполнение метода addLog класса SimpleLogger, после чего он возвращает выполнение методу getResult.

Для начала рассмотрим перехватывающий метод.
Он обязан иметь аннотацию @AroundInvoke, и в классе интерцепорта может быть только один метод с этой аннотацией.
Этот метод может иметь модификатор доступа public, private protected или пакетного доступа, но не может быть объявлен как final или static
Семантика аннотированного метода должна удовлетворять следующему шаблону:
Object (InvocationContext ) throws Exception.

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

Интерфейс InvocationContext позволяет нам получить доступ к информации о вызываемом методе.
Рассмотрим его код.

public interface InvocationContext < public Object getTarget(); public Method getMethod(); public Object[ ] getParametrs(); public void setParametrs(Object[ ] ); public java.util.MapgetContextData(); public Object proceed(); > 
  • getTarget возвращает объект, в котором был вызван перехваченный метод
  • getMethod возвращает метод бина, у которого был вызван интерсептор, но если был перехвачен жизненного цикла бина (например метод @PreDestroy), то он вернет null
  • getParametrs вернет входные параметры метода в виде массива объектов
  • setParametrs позволяет изменить в процессе выполнения параметры метода
  • getContextData возвращает карту, которая может быть использована интерсепторами для взаимодействия друг с другом, то есть, если один метод перехватывает несколькими интерсепторами, то первый может записать в эту карту какой-либо значение, а последующие интерсепторы для своих целей могут считать эти значения.

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

public class SimpleLogger < @PostConstruct public void init(InvocationContext context)< //логирование создания объекта, например через context.getTarget() context.proceed(): >@PreDestroy public void remove(InvocationContext context) < //какая-то логика context.proceed(): >> 

Еще одним особенным применением интерсепторов является то, что вы можете объявить так называемый “default interceptor” действие которого будет расспространятся на все классы внутри одного приложения. Такой перехватчик можно объявить только через дескриптор развертывания, выглядит это так

 *  ru.interceptortest.Validate  

При этом, если необходимо, что бы действие этого интерсептора не расспростанялось на какой-либо класс, его необходимо пометить его аннотаций @ExcludeDefaultInterceptors.

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

public class SimpleLogger < @AroundInvoke public Object logAction(InvocationContext context) throws Exception < System.out.println("object - " + context.getTarget().getClass()); System.out.println( "method - " + context.getMethod()); return context.proceed(); >> 

И создадим простой класс, производящий арифметические операции, пометив один из методов аннотацией @Interceptors(SimpleLogger.class).

@Stateless public class Count implements Serializable < double firstArgument=0; double secondArgument=0; //геттеры и сеттеры и тд @Interceptors(SimpleLogger.class) public double getSummResult() < return getFirstArgument()+ getSecondArgument(); >> 

Если вы будем вызывать метод этого класса getSummResult(), то в консоль сервера impleLogger.logAction выведет:

object - class ru.interceptorexample.Count method - public double ru.interceptorexample.Count.getSummResult() 

Добавим еще один класс интерсептора.

public class LifeLogger < @AroundInvoke public Object logAll(InvocationContext context) throws Exception < System.out.println("LogAll object - " + context.getTarget()); System.out.println("LogAll method - " + context.getMethod()); return context.proceed(); >@PostConstruct public Object logCreate(InvocationContext context) throws Exception < System.out.println("create - " + context.getTarget().getClass().getClass); return context.proceed(); >> 

И добавим еще один метод в класс Count.

public double getMultiplyResult()

И пометим дополнительно весь класс аннотацией @Interceptors(LifeLogger.class).
Теперь, когда будет вызван метод getMultiplyResult, сначала, при создании экземпляра класса Count, интерсептор LifeLogger выведет в консоль сервера:

create - class ru.interceptorexample.Count 
LogAll object - class ru.interceptorexample.Count LogAll method - public double ru.interceptorexample.Count.getMultiplyResult() 

А если вызывать метод getSummResult то сначала отработает интерсептор LifeLogger, а потом SimpleLogger и в консоли сервера получится:

LogAll object - class ru.interceptorexample.Count LogAll method - public double ru.interceptorexample.Count.getSummResult() object - class ru.interceptorexample.Count method - public double ru.interceptorexample.Count.getSummResult() 

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

Источники информации, для тех, кто хочет подробнее узнать работу этого механизма:
1. мануалы с сайта oracle.com
2. EJB 3 in Action — Debu Panda, Reza Rahman, Derek Lane ISBN: 1-933988-34-7

Исходные коды в виде маленького простого веб приложения желающие могут получить с гитхаба (проект делал под netbeans и glassfish, но думаю не составит труда, если понадобится перенести его в другую среду). github.com/tsegorah/JavaInterceptorsExample.git

Сниффинг трафика. Полное руководство по INTERCEPTER-NG

Intercepter-NG – это многофункциональный набор сетевого инструментария для IT специалистов различного типа. Главной целью является восстановление интересных данных из сетевого потока и выполнение различного рода атак человек-посередине (MiTM). Кроме этого программа позволяет выявлять ARP спуфинг (может применяться для обнаружения атак человек-посередине), выявлять и эксплуатировать некоторые виды уязвимостей, брут-форсить учётные данные входа сетевых служб. Программа может работать как с живым потоком трафика, так и анализировать файлы с захваченным трафиком, для обнаружения файлов и учётных данных.

Программа предлагает следующие функции:

  • Сниффинг паролей/хешей следующих типов: ICQ, IRC, AIM, FTP, IMAP, POP3, SMTP, LDAP, BNC, SOCKS, HTTP, WWW, NNTP, CVS, TELNET, MRA, DC++, VNC, MYSQL, ORACLE, NTLM, KRB5, RADIUS
  • Сниффинг сообщений чатов: ICQ, AIM, JABBER, YAHOO, MSN, IRC, MRA
  • Реконструкция файлов из: HTTP, FTP, IMAP, POP3, SMTP, SMB
  • Различные типы сканирования, такие как неразборчивый (Promiscuous) режим, сканирование ARP, DHCP, шлюза, портов и Smart
  • Захват пакетов и последующий (офлайн) анализ/RAW (сырой) режим
  • Удалённый захват трафика через RPCAP демона и PCAP Over IP
  • NAT, SOCKS, DHCP
  • ARP, DNS через ICMP, DHCP, SSL, SSLSTRIP, WPAD, SMB ретранслятор, SSH MiTM
  • SMB Hijack (перехват), LDAP ретранслятор, MySQL LOAD DATA инъекция
  • ARP Watch, ARP Cage, HTTP инъекция, эксплойт Heartbleed, Kerberos Downgrade, Cookie Killer
  • DNS, NBNS, LLMNR спуфинг
  • Брутфорс различных сетевых служб

Режимы Intercepter-NG

Режим Resurrection (эмблемой на кнопке является Феникс) означает восстановление файлов из сетевого потока. Это могут быть файлы изображений, просмотренных на веб-сайтах, а также файлы переданных архивов, документов и любых других.

При переключении на Режим Паролей (третья кнопка — связка ключей) вы увидите учётные данные, захваченные из сетевого потока. Отображаются адреса сайтов, введённые логины и пароли.

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

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

Вкладка DHCP содержит некоторые настройки сети и DHCP сервера.

Режим RAW (сырой) выводит необработанную информацию о передаваемых в сетевом потоке данных. Информация представлена в виде, похожем на Wireshark.

Опции Intercepter-NG

  • Если вы собираетесь проводить офлайн анализ pcap дампа, то для ускорения процесса снимите галочку с “Resolve Hosts”.
  • Если поставить галочку на опции ‘Lock on Tray‘, то при восстановлении окна из трэя у вас будет спрашиваться пароль. Паролем по умолчанию является ‘4553‘. Вы можете поменять его в файле settings.cfg. Пароль кодируется в base64.
  • Опция ‘Save Session‘ означает, что Intercepter сохранит все полученные пакеты в файл pcap. Этот файл можно использовать для офлайн анализа данных. Это своего рода функция экспорта результатов.
  • Если установить Promiscuous, то Intercepter открывает сетевой адаптер в неразборчивом (promiscuous) режиме. Это означает, что он будет читать все пакеты, даже те, которые не предназначены для данного сетевого интерфейса. Если галочка снята, то он будет считывать только пакеты, которые отправлены указанному интерфейсу. Некоторые Wi-Fi карты не поддерживают этот режим.
  • Unique Data” — показывать только уникальные логины и пароли. Т.е. показывать захваченные логины и пароли только один раз — если пользователь ввёл тот же логин и пароль снова, он не будет отображаться.
  • Autosave — вся текстовая информация будет сохраняться каждые 10 секунд.
  • По умолчанию стоит галочка на “Grid View”. Она означает, что пароли будут выглядеть как сетка с данными. Для просмотра полной детальной информации снимите галочку с “Grid View”.
  • eXtreme. В типичном рабочем процессе сниффер анализирует предопределённые порты ассоциированные со специфичными протаколами. Если мы говорим http, мы подразумеваем 80 порт (или 8080 или какие там предопределены в списке портов ассоциированных с http протоколом). Т.е. будут проанализированы только эти порты. Если некоторые приложения используют другой порт, например, 1234, тогда сниффер не будет анализировать пакеты, которые проходят через него. В режиме eXtreme Intercepter будет анализировать все TCP пакеты без проверки портов. Т.е. даже если какое-то приложение использует неопределённый порт, сниффер всё равно будет проверять эти пакеты. Хотя это замедляет производительность (необходимо проверить намного больше портов чем обычно) и может выявить неправильные данные или пропустить правильный протокол (6например, FTP и POP3 использует тот же тип авторизации), он даёт возможность найти и перехватить интересные данные на неопределённых портах. Используйте этот режим на свой собственный риск, не удивляйтесь, если что-то пойдёт не так когда eXtreme режим включен.
  • Capture Only‘ означает, что Intercepter будет только сохранять пакеты в файл дампа без анализа в реальном времени. Это полезно для увеличения производительности, когда вы захватываете много сетевых данных.
  • Опция Resurrection означает включение режима Resurrection, который реконструирует файлы из данных, переданных в сетевом потоке.
  • IM Ports
  • HTTP. Ассоциированные с HTTP порты, подробности смотрите в описании опции eXtreme.
  • SOCKS
  • IRC\BNC

Опции атак человек-посередине (MiTM) в Intercepter-NG

  • Во всех MiTM атаках Intercepter использует спуфинг (подмену) адресов ip\mac (опция Spoof IP\MAC). Если вы используете Wi-Fi интерфейс, то вы должны снять галочку с этой опции, поскольку 99% wifi драйверов не позволяют отправлять пакеты с подменённым mac. Хотя вы раскрываете свой реальный адрес, вы хотя бы способны выполнять любые атаки MiTM через wifi интерфейс. Это лучше, чем ничего. Вместо отключения спуфинга в настройках, используйте WIFI режим. Вы можете изменить показываемый mac в Экспертном Режиме.
  • iOS Killer была добавлена для iCloud, а так же Instagram и VK. Эта функция (iOS Killer) сбрасывает сессии указанных приложений и позволяет перехватить повторную авторизацию.
  • Kerberos Downgrade

Как запустить MiTM в Intercepter-NG

Начните с выбора сетевого адаптера (Network Adapter):

Кликните правой кнопкой по пустой таблице и выберите Smart Scan:

Будет отображён список целей:

Добавьте нужные в качестве целей (Add as Target):

Для начала сниффинга нажмите соответствующую иконку:

Перейдите на вкладку MiTM mode (это глобус с патч-кордами) и нажмите иконку ARP Poison (символ радиационной опасности):

Во вкладке Password Mode (символ — связка ключей), будут появляться захваченные учётные данные:

Спасибо за прочтение!

Вышел Intercepter-NG 2.5 для Android

Да, Intercepter еще жив! И после длительного затишья я рад представить новую версию.

Изначально ставилась задача причесать интерфейс, исправить ошибки, ввести некоторые нововведения и протестировать работоспособность на новых версиях Android.

Что из этого вышло — под катом.

image

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

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

Чтобы избежать лишних ожиданий в момент запуска отображается результат предыдущего сканирования для текущей сети. Также при запуске делается быстрый pre-scan — чтобы исключить необходимость повторного сканирования, как это требовалось в прошлых версиях. Улучшен процесс сканирования, добавлен новый способ разрешения имён. Добавлена функция автоматического сохранения имён. Если во время сканирования не удалось определить имя устройства — оно будет взято из кэша.

В настройках добавилась кнопка диагностики. В случае возникновения проблем выводимая информация сможет облегчить поиск решения. В частности, проверяется статус SELinux. Intercepter автоматически переключает setenforce в 0 во время запуска, поэтому если в диагностике окажется статус Enforcing — значит, на данной системе он не отключаем и корректной работы ждать не стоит. Такая ситуация встречается, например, на стоковых прошивках у Samsung. Решается установкой сторонних ROM’ов, например LineageOS.

Новый Intercepter запускается на всех архитектурах начиная с версии Android 4.4. Основное тестирование проводилось на Android 9 и 10, никаких отличий в работе на более ранних версиях быть не должно. Больше не требуется дополнительная установка BusyBox и SuperSU. Достаточно Magisk или иных встроенных root-менеджеров. Libpcap обновлён до версии 1.9.1. Начиная с Android 8.1 для получения SSID сети (он высвечивается на начальном экране) требуется предоставить доступ к данным о местоположении. Их можно не предоставлять, на функционале программы это никак не сказывается.

Улучшен код для работы SSLStrip, добавлен HSTS спуфинг.

Имевшийся ранее сканер портов переделан в упрощенный X-Scan из оригинальной версии под Windows. К открытым портам применяется проверка на наличие SSL, затем высвечивается баннер службы (при наличии) и порт проверяется на принадлежность к HTTP протоколу.
Если это так — выводится информация из различных HTTP заголовков.

Если открыт 445 порт, то инициируется попытка прочитать версию ОС через SMB запрос. Дополнительно запускается проверка на наличие EternalBlue уязвимости.

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

Производя обычное ARP сканирование, мы получаем пару IP:MAC. По MAC адресу мы можем определить производителя сетевой карты, через ICMP запрос мы можем получить значение TTL и определить, в общих чертах, тип операционной системы: Windows (128), Unix (64) или что-то более редкое — Cisco IOS (255). Если на исследуемом устройстве имеются открытые TCP порты, то мы можем получить TCP Window Size и уже отделить Windows XP от Windows 7 или Linux от FreeBSD.

Именно по этой схеме определялась операционная система в предыдущих версиях Intercepter.

В попытке расширить возможности определения ОС я обратился к пассивному фингерпринтингу, который многие годы попросту игнорировал. Наиболее актуальным приложением с относительно свежей базой является Satori. И Satori и p0f (другой известный инструмент) работают точно таким же образом, что описан выше, только помимо двух значений-маркеров анализируется ряд других полей IP и TCP заголовков, а также TCP опции, их значение и последовательность. Полученный отпечаток представляет из себя строку следующего вида: 64240:128:1:52:M1460,N,W8,N,N,S:T. Это фингерпринт для Windows 10, который так же актуален для Windows 7.

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

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

Если мы добавим к TCP отпечатку еще и первые 3 байта MAC адреса, то получится практически уникальная запись, позволяющая с высокой степенью точности определить уже не столько операционную систему, сколько модель устройства! Как минимум это применимо к смартфонам, планшетам и другим служебным сетевым устройствам типа маршрутизаторов, принтеров и так далее. Так мы значительно увеличиваем пользу от применения сетевых отпечатков. Единственная сложность — собрать базу записей…

Задача решается несколькими способами:

1.

В настройках Intercepter добавлена кнопка, которая генерирует фингерпринт для вашего устройства, достаточно его скопировать и выслать мне на почту.

Главное убедитесь, что у вас отключена рандомизация MAC адреса, иначе фингерпринт будет совершенно бесполезен.

Плюсы: не требует особых телодвижений.
Минусы: даёт отпечаток только Android устройств с root правами.

2.

X-Scan. При наличии хотя бы одного открытого порта, по завершению сканирования, выводится отпечаток для исследуемого устройства, который автоматически копируется в буфер обмена. Если у вас есть возможность узнать версию ОС и\или модель устройства — подпишите отпечаток и вышлите на почту.

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

3.

Intercepter-NG 1.0+. Я выпустил небольшое обновление, добавив вывод отпечатков при Smart сканировании. Присутствуют различные исправления и улучшения относительно предыдущей версии 1.0, в том числе в X-Scan добавлен чекер на EternalBlue, обновлена база oui. Не забудьте поставить npcap.

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

Пример полноценного отпечатка: CC2DE0;14480:64:1:60:M1460,S,T,N,W5:ZAT=Linux 3.x; MikroTik RB750Gr3

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

Эта база будет полезна не только для использования в Intercepter, она точно так же станет полезной для любого другого проекта, который занимается анализом трафика, например NetworkMiner, используемый в компьютерной криминалистике. Существующие базы для пассивного определения ОС по TCP отпечаткам сильно устарели или имеют недостаточное количество записей. Есть nmap, который так или иначе обновляется, но nmap — это про активное сканирование, совсем другая история…

Intercepter предлагает удобный и быстрый способ собрать отпечатки, не требуя глубоких познаний в IT — запусти сканирование, скопируй отпечаток — подпиши, отправь. Piece of cake.

Я даю инструмент, а что с ним делать дальше — решать вам…

Многих интересует судьба основной Windows версии. Выход полноценного обновления обязательно будет, но когда — пока неизвестно.

Выражаю благодарность AndraxBoy и другим пользователям 4pda за оказанную помощь в тестировании. Отдельное спасибо Магомеду Магомадову и Александру Дмитренко.

Вопросы, пожелания и отпечатки можно слать на [email protected]. Для отпечатков необходимо указать тему Fingerprint.

Site: sniff.su
Mirror: github.com/intercepter-ng/mirror
Mail: [email protected]
Twitter: twitter.com/IntercepterNG
Forum: intercepterng.boards.net
Blog: intercepter-ng.blogspot.ru

При подготовке материала использовались источники:
https://habr.com/ru/articles/146753/
https://telegra.ph/Sniffing-trafika-Polnoe-rukovodstvo-po-INTERCEPTER-NG-01-31
https://habr.com/ru/articles/497304/

Оцените статью