dini 02.02.2011 14:30
Python — Следим за народом
Как-то начальство поставило задачу узнать чем занимаются люди на рабочем месте и не сливают ли чего конкурентам. После раскопок ответов Гугла было принято решение писать своё. Описание сего чуда под катом.Из возможностей:
1. Понимает ICQ и MRIM(Агент@Mail.ru), при этом вне зависимости от порта, разбор идёт на уровне протоколов.
2. Коректно разбирает кодировки сообщений(вроде как).
Системные требования:
1. Linux(пока только он, но это только пока)
2. nfqueue-bindings
3. Python
4. MySQL
5. Web-сервер с поддержкой CGI(для морды)
Установка и использование:
1 |
|
Создаём базу, юзверя и таблицы:
Далее:
1 |
iptables -A INPUT -m string --algo bm --from 51 --hex-string '|EF BE AD DE|' -j NFQUEUE
|
1 |
|
Последняя строка должна выполняться от рута.
На этом этапе вы должны будете увидеть свой агентовский траффик.
За дополнительной информацией можете полазить по папкам, в папке contrib имеются примерные скрипты для автозапуска и настройки iptables на шлюзе.
PS: Снифер снифает только кто кому и когда написал, никаких паролей!!!
Google+
zz 02.02.2011 16:25 #
+ 1 -
Тема поста интересна, но скудно описана. Не хочется все это устанавливать, только что бы узнать о возможностях. Добавьте, пожалуйста, информацию о самой системе (какую информацию она собирает) и скриншоты веб-интерфейса. Так же интересно про последовательность "EF BE AD DE": она встречается только в ICQ и MRIM? в каждом сообщении им-клиентов или только при авторизации? а ssl в ICQ и MRIM не может использоваться?
1. Прозрачный перехват сообщений icq и mrim
2. Если вы видели таблицу на html - вы видели веб интерфейс. Украшательств нет. Сугубо инфа кто кому и когда что написал, и что ему написали в ответ.
3. Последовательность EF BE AD DE встречается в mrim. За подробностями в гугл и tcpdump.
4. SSL может использоваться, но отлавливаться не будет. Курим ssldump и мат.часть.
2. Если вы видели таблицу на html - вы видели веб интерфейс. Украшательств нет. Сугубо инфа кто кому и когда что написал, и что ему написали в ответ.
3. Последовательность EF BE AD DE встречается в mrim. За подробностями в гугл и tcpdump.
4. SSL может использоваться, но отлавливаться не будет. Курим ssldump и мат.часть.
Красивый ответ, честно говоря более объёмно трудно ответить. Спасибо!!!
Последовательность EF BE AD DE есть ничто иное как 0xDEADBEEF в big endian порядке (т.е. dead beef, "мёртвая говядина") и используется очень часто как magic number, просто потому что красиво звучит/выглядит в дампе. Так что по идее этот скрипт должен ловить не только icq но и довольно много других протоколов...
P.S. не стал бы у вас работать
P.S. не стал бы у вас работать
ИМХО, если кто-то поставит перед собой цель слить инфу, врядли он будет делать это посредством мессенджеров. Гораздо проще скопировать на флешку или отправить почтой... А вообще, параноики сложные люди. Не хотел бы работать в конторе, в которой постоянно за мной следят. А вдруг я с женой о личном общаюсь? Зачем это кому-то знать?
А зачем вы это делаете в рабочее время?
PS Я тоже на работе о личном общаюсь, но возможность слежки учитываю.
PS Я тоже на работе о личном общаюсь, но возможность слежки учитываю.
Я не писал, что я этим на работе занимаюсь :) Всего лишь предположил. На работе работать нужно :)
А зачем Вам родственники? Ведь у них беда может быть в рабочее время!
То что некоторые не умеют работать и занимаются в рабочее время личными делами никому не даёт право лишать личной жизни и "прослушивать", это элементарно неприлично!!!
Да и степень КПД зависит не от того сколько он проговорил на личные темы! Можно сколько угодно потратить на личное время и потом своей работой в разы перекрыть это "потерянно" время.
Кстати, зачастую те кто занимаются контролем других или малополезны (потому и придумывают себе работу вместо полезных занятий) или у них комплекс 20/80 (причём они себя точно относят к категории 20 и не могут объективно взглянуть на действительность)
То что некоторые не умеют работать и занимаются в рабочее время личными делами никому не даёт право лишать личной жизни и "прослушивать", это элементарно неприлично!!!
Да и степень КПД зависит не от того сколько он проговорил на личные темы! Можно сколько угодно потратить на личное время и потом своей работой в разы перекрыть это "потерянно" время.
Кстати, зачастую те кто занимаются контролем других или малополезны (потому и придумывают себе работу вместо полезных занятий) или у них комплекс 20/80 (причём они себя точно относят к категории 20 и не могут объективно взглянуть на действительность)
Если беда - позвонят. Хорошо хоть на моей работе не надо отключать мобильник. Да, неприлично, но таковы некоторые работодатели, и кроме увольнения выходов не видно. Я точно знаю, что моя производительность возрастает, если раз в час я отвлекаюсь минут на 5, но не каждый начальник это поймёт.
Я не побуждаю всех следить за всеми, но считаю, что работодатель может контролировать, как расходуются его деньги, которые уходят на оплату интернет-трафика и стационарного телефона.
По поводу 5 минут - это правило перекура, сам не курю, но на перекур всё равно периодически выхожу поскольку организму нужен отдых.
А для того чтобы НЕ следить на расход трафика настраивается политика раздачи интернета. У нас в конторе есть один комп отданный в голом виде в инет. Хоть порнуху смотри, если не стыдно перед всеми. И на результат после этого просмотра... А для всех остальных прокся с лимитом и резалкой.
И прослушка в любом виде это уголовное преступление.
А для того чтобы НЕ следить на расход трафика настраивается политика раздачи интернета. У нас в конторе есть один комп отданный в голом виде в инет. Хоть порнуху смотри, если не стыдно перед всеми. И на результат после этого просмотра... А для всех остальных прокся с лимитом и резалкой.
И прослушка в любом виде это уголовное преступление.
есть безлимитный мобильный интернет за 200 рэ в месяц. по крайней мере в дефолтСити. можно слить все что угодно и общаться с кем угодно - даже жена не заметит ;)
А работники подписывают какие-либо документы? Или слежка без их ведома? Дело пахнет керосином.
Тоже не стал бы у вас работать. Лучше оценивать работу по достигнутому результату.
Тоже не стал бы у вас работать. Лучше оценивать работу по достигнутому результату.
я просто не понимаю доколе чем руководствуется начальство? Не нравятся личные переговоры? Делаем как у меня на работе: все рабочие станции в домене, права на установку софта только у айти отдела. Всё остальное на тонких клиентах, которые кроме как подключаться к серверу терминалов ничего не умеют.
Плюс: админы занимаются своим делом, а не чтением личной переписки персонала.
Плюс: админы занимаются своим делом, а не чтением личной переписки персонала.
Skype не надо права админа для установки... что меня честно говоря очень удивило, но факт, поставил себе на работе скайп не прибегая к помощи админа. Вот такая "хакерская" говорилка. И этот скрипт с ним наверняка тоже ничего не сделает...
Ога, скайп можно ставить без админа, если чесно, я ждал, что кто-то об этом напишет. Использование скайпа можно запретить через групповые политики и он работать не будет. Проверено.
Мне не интерестно читать кто кому и что пишет, для меня интерестна реализация, а читать... пусть читают те для кого это писалось. Для меня было интерестно узнать что, не смотря на то, что прописанно в документации по протоколу, "Агент" может слать сообщения и в CP-1251(по описанию единственная кодировка) и в UTF-8(понятно каким боком, но, исходя из описания, его быть не должно). Мне интерестно решать задачи.
PS: В штате конторы я не числюсь. начальство предупрежденно(правда не под роспись).
PS: В штате конторы я не числюсь. начальство предупрежденно(правда не под роспись).
Подскажите, почему не запускается?
Ubuntu 9.04 x64
python 2.6.2
Все зависимости установлены.
Помогите!!
# python imsniff.py -b
/var/lib/python-support/python2.6/MySQLdb/__init__.py:34: DeprecationWarning: the sets module is deprecated
from sets import ImmutableSet
Traceback (most recent call last):
File "imsniff.py", line 337, in <module>
main()
File "imsniff.py", line 334, in main
sniff.run()
File "imsniff.py", line 321, in run
self.bind()
File "imsniff.py", line 271, in bind
self.q.bind(socket.AF_INET)
File "/usr/lib/python2.6/dist-packages/nfqueue.py", line 79, in bind
def bind(*args): return _nfqueue.queue_bind(*args)
TypeError: queue_bind() takes exactly 1 argument (2 given)
Ubuntu 9.04 x64
python 2.6.2
Все зависимости установлены.
Помогите!!
Исправьте:
на
Честно говоря сам не разобрался какого ч>рта в разных дистрах разное число аргементов передается.
def callback(self, payload):
на
def callback(self, dummy, payload):
Честно говоря сам не разобрался какого ч>рта в разных дистрах разное число аргементов передается.
Dini, спасибо за совет, но не помогло.
Ошибка с callback ушла, но остальные остались.
Что еще можно сделать? Я не пишу на питоне (((
Ошибка с callback ушла, но остальные остались.
Что еще можно сделать? Я не пишу на питоне (((
Извеняюсь, не с начала прочитал...
Открываем /var/lib/python-support/python2.6/MySQLdb/__init__.py, закоменчиваем 34 строку и вставляем после нее
Должно проканать.
Проблема описана здесь.
Открываем /var/lib/python-support/python2.6/MySQLdb/__init__.py, закоменчиваем 34 строку и вставляем после нее
add after that line: ImmutableSet = frozenset
, коментим 41 строку(from sets import BaseSet
) и вставляем посля нее BaseSet = set
Должно проканать.
Проблема описана здесь.
Мля... чет все поломалось...
34 строку меняем на ImmutableSet = frozenset, а 41 на BaseSet = set
После этого должно заработать.
34 строку меняем на ImmutableSet = frozenset, а 41 на BaseSet = set
После этого должно заработать.
dini, исправил, но не помогло (((
Видимо не судьба и нужно учить питон...
Видимо не судьба и нужно учить питон...
Так, но теперь мне самому интерестно чего, где и как...
Можете скинуть чего теперь в консоли кричит?
Можете скинуть чего теперь в консоли кричит?
да ничего и не изменилось ((
вот вывод:
вот вывод:
python imsniff.py -b
Traceback (most recent call last):
File "imsniff.py", line 337, in <module>
main()
File "imsniff.py", line 334, in main
sniff.run()
File "imsniff.py", line 321, in run
self.bind()
File "imsniff.py", line 271, in bind
self.q.bind(socket.AF_INET)
File "/usr/lib/python2.6/dist-packages/nfqueue.py", line 79, in bind
def bind(*args): return _nfqueue.queue_bind(*args)
TypeError: queue_bind() takes exactly 1 argument (2 given)
Ну почемуж, терь на мускул не матюгается.
Так, а вот с биндом нада разобраться... ща покумекаю и отпишу...
Так, а вот с биндом нада разобраться... ща покумекаю и отпишу...
практически те же ошибки :)
root@gw2:/usr/bin# imsniff.py -b
Traceback (most recent call last):
File "/usr/bin/imsniff.py", line 337, in
main()
File "/usr/bin/imsniff.py", line 334, in main
sniff.run()
File "/usr/bin/imsniff.py", line 321, in run
self.bind()
File "/usr/bin/imsniff.py", line 271, in bind
self.q.bind(socket.AF_INET)
File "/usr/lib/python2.6/dist-packages/nfqueue.py", line 93, in bind
def bind(self, *args): return _nfqueue.queue_bind(self, *args)
RuntimeError: error during nfq_bind_pf()
Python 2.6.6
Debian GNU/Linux 6.0.1 (squeeze)
root@gw2:/usr/bin# imsniff.py -b
Traceback (most recent call last):
File "/usr/bin/imsniff.py", line 337, in
main()
File "/usr/bin/imsniff.py", line 334, in main
sniff.run()
File "/usr/bin/imsniff.py", line 321, in run
self.bind()
File "/usr/bin/imsniff.py", line 271, in bind
self.q.bind(socket.AF_INET)
File "/usr/lib/python2.6/dist-packages/nfqueue.py", line 93, in bind
def bind(self, *args): return _nfqueue.queue_bind(self, *args)
RuntimeError: error during nfq_bind_pf()
Python 2.6.6
Debian GNU/Linux 6.0.1 (squeeze)