Состоялся (hhttps://sourceware.org/ml/systemtap/2016-q1/msg00179.html) релиз системы динамической трассировки SystemTap 3.0 (http://sourceware.org/systemtap/), предоставляющий для платформы Linux средства похожие на технологию DTrace. SystemTap позволяет организовать доскональное наблюдение за работающей Linux системой, производить сбор статистики о работе приложений, профилирование и контроль системных вызовов. Управление производится через интерфейс командной строки и специальный Си-подобный язык сценариев (http://sourceware.org/systemtap/documentation.html). Система протестирована с ядрами Linux начиная с версии 2.6.18 и заканчивая 4.6.0-rc0.В развитии проекта участвуют такие компании как Red Hat, IBM, Intel, Hitachi и Oracle. В каталоге примеров (http://sourceware.org/systemtap/examples/keyword-index.html) представлено более 150 скриптов на все случаи жизни, подходящие для слежения за распределением памяти, вводом/выводом, дисковыми операциями, сетевым трафиком (например, анализ работы NFS), работой планировщика задач, обработкой прерываний, использованием системных буферов, установкой блокировок, выполнением системных вызовов, обработкой сигналов и т.п.
В новой версии представлен экспериментальный интерактивный консольный интерфейс, вызываемый через "stap -i" и позволяющий собирать, запускать и редактировать скрипты. Также добавлен экспериментальный режим мониторинга ("--monitor") для наблюдения за текущей статистикой о запущенных модулях в стиле утилиты top. Число примеров скриптов доведено до 156, добавлены скрипты для отслеживания локальных источников отправки сетевых пакетов и
скрипты с примерами (https://securityblog.redhat.com/2015/06/03/emergency-securit... проверки различных уязвимостей.В языке создания скриптов оптимизирована работа с ассоциативными массивами и добавлена поддержка перегрузки функций (https://ru.wikipedia.org/wiki/%D0%9F%D0%.... Во встраиваемых функциях и блоках на языке СИ добавлена возможность доступа к глобальны переменным скриптов. Добавлена поддержка приватных переменных и функций, ограниченных текущим tapset-файлом.
URL: https://sourceware.org/ml/systemtap/2016-q1/msg00179.html
Новость: https://www.opennet.ru/opennews/art.shtml?num=44123
Чем оно отличается от strace ?
Принципом работы. Strace просто показывает перехваченные через ptrace сисколлы. Stap же позволяет писать скрипты, которые транслируются в си, загружаются в виде модулей в ядро и смотреть, что происходит в системе, изнутри с произвольным уровнем подробностей.
круто)
В теории. На практике че-то у меня дальше того же самого, что умеет stace не пошло.
Хотя, к неосиляторам я себя не отношу ))
> SystemTrapFix
Лучше бы они выбрали какой-нибудь определённый язык для скриптов из существующих, а не велосипедный. Или вообще сделали бы хороший C-API.
Зачем, у них весьма простенький DSL.
а что можно использовать для отладки в windows?
Это зависит от того что вы собрались отлаживать. Можно обычный дебаггер использовать (если есть исходники), можно какой-нить Dr. Memory (это аналог valgrind), системные сообщения окнам можно смотреть через древнющие (но вполне рабочие) winsight и аналоги, сетевой трафик можно анализировать с помощью wireshark и т.д. Даже ProcessExplorer вполне помогает с отладкой. Про всякие драйверы и отладку на уровне ядра не в курсе... но тут всегда можно по старинке через логи.Определитесь с задачей.
задача такая - В виндовс включён брандмауэр в расширенной безопасности - все входящие и все исходящие подключения запрещены. Затем разрешается выйти в Интернет DNS клиенту и какому-нибудь браузеру. То есть, выходить в Интернет всем остальным приложениям запрещено. Но эти приложениям всё равно разрешено дёргать DNS клиент своими дурацкими запросами. И непонятно от каких программ эти запросы поступают.Хотелось бы знать даже какие службы или задачи Виндовс делают днс запросы, чтобы потом или покопаться в настройках этой службы или прописать в hosts файл эти дурацкие запросы. Периодические опросы dns службы мне кажется дают информацию владельцам тех же зон Микрософт много информации о том что установлено на компьютере за ОС и возможно другие программы Микрософт тоже через днс запросы.
Или как вариант программу журналирования, которая позволяла бы видеть какая программа делает днс запросы к днс клиенту.Есть куча программ, которая в онлайн видит сетевые коннекты тех или иных программ, но интересно видеть всё- через журналирование от каких программ поступили те или иные запросы к днс. Сейчас у меня две семёрки стоят рядом -одна windows 7 64 бит , а на второй Centos 7 с wireshark. Через wireshark я вижу эти запросы днс, но от какой они точно программы вышли не знаю. То есть, нужен отладчик уровня системных вызовов к сетевым сервисам windows
> Через wireshark
> я вижу эти запросы днс, но от какой они точно программы
> вышли не знаю. То есть, нужен отладчик уровня системных вызовов к
> сетевым сервисам windowsМожет помочь мониторинг системных вызовов к Ws2_32.dll. Но для этого нужно запустить под трейсером/профайлером (допустим под Dr.Memory) конкретный exe-шник.
Виндовый netstat наверное ничего не успеет (он тормоз, а тут короткоживущие UDP запросы). А вот tcpvcon.exe/tcpview.exe из SysInternals может помочь (не пробовал, но наверное наиболее подходящее).
P.S. Вообще в винде предусмотрено много таких средств мониторинга (и даже ограничения активности), ими активно пользуются антивирусы и файерволлы. Может какой-то из навороченных файерволлов сможет помониторить DNS-запросы.
> Может помочь мониторинг системных вызовов к Ws2_32.dll. Но для этого нужно запустить
> под трейсером/профайлером (допустим под Dr.Memory) конкретный exe-шник.
> Виндовый netstat наверное ничего не успеет (он тормоз, а тут короткоживущие UDP
> запросы). А вот tcpvcon.exe/tcpview.exe из SysInternals может помочь (не пробовал, но
> наверное наиболее подходящее).
> P.S. Вообще в винде предусмотрено много таких средств мониторинга (и даже ограничения
> активности), ими активно пользуются антивирусы и файерволлы. Может какой-то из навороченных
> файерволлов сможет помониторить DNS-запросы.Спасибо за обстоятельные ответы, буду искать подходящее решение!
>> Через wireshark
>> я вижу эти запросы днс, но от какой они точно программы
>> вышли не знаю. То есть, нужен отладчик уровня системных вызовов к
>> сетевым сервисам windows
> Может помочь мониторинг системных вызовов к Ws2_32.dll. Но для этого нужно запустить
> под трейсером/профайлером (допустим под Dr.Memory) конкретный exe-шник.
> Виндовый netstat наверное ничего не успеет (он тормоз, а тут короткоживущие UDP
> запросы). А вот tcpvcon.exe/tcpview.exe из SysInternals может помочь (не пробовал, но
> наверное наиболее подходящее).procmon + фильтры.
> procmon + фильтры.procmon интересная штука, странно, что я ей раньше не пользовался, беру в арсенал.Спасибо. На виндовс 7 работает, а вот почему -то на виндовс 10 не стартует, но ничего и не сообщает.Прочитать лицензию дала. и тишина
можно попробовать messsage analyzerhttps://blogs.technet.microsoft.com/messageanalyzer/2015/06/.../
мм интересно, надо попробовать, мне ещё `perf` нравится, тоже на dtrace похож, только с блекджеком и вот этим вот всем
Я так понимаю, что с помощью этой штуки получится отследить какие процессы что-то записывали в определенные каталоги ФС (или хотя бы открывали файлы на запись)? Ну например, процессы, которые записывали данные в /home/user/* и далее по иерархии.
кстати auditd вроде тоже это все должен уметь
Ну тут придётся иметь в виду, что тут потребуется отлавливать всех, кто открывает файлы на запись, иначе никак. Для файлового хранилища может немного увеличить время выполнения соответствующих системных вызовов. В принципе, всё, что нужно сделать - это выбрать нужный системный вызов. Первое, что приходит на ум по постановке задачи - это sys_open (2). Но может, автор найдёт для себя что-нибудь более подходящее. Может, ему хватит stat для какого-то начального анализа ситуации. Более подробно со списком системных вызовов можно ознакомиться например так:
% less ~/linux/linux-4.3.5/arch/x86/entry/syscalls/syscall_64.tbl
(предполагая, что в ~/linux/linux-4.3.5 лежат сырцы актуального в системе ядра)
> Я так понимаю, что с помощью этой штуки получится отследить какие процессы
> что-то записывали в определенные каталоги ФС (или хотя бы открывали файлы
> на запись)? Ну например, процессы, которые записывали данные в /home/user/* и
> далее по иерархии.Легко. Но для этого проще заюзать auditd
inotifywait -rm <каталог или файл>
хотя, нет, там имён процессов нет, только доступ