Одним из принципов крипторафических методов защиты информации заключается в том, чтобы стоимость усилий, затраченные на расшифровку информации значительно превышали соимость информации.
Похоже, этот же принцип используется и в различных схемах использования льгот, которых и так-то немного в России. Я составил микро-рейтинг известных мне случаев, к некоторым из к которым был сам причастен. Если уважаемым читателям известны еще какие криптографические схемы в жизни, пожалуйста, пишите, интересно.
На последнем месте рассказ моего коллеги по работе. У него больные родители, они не пользуются льготами, так как не ходят, поэтому им положена монетизация льгот. Проблема в том, что они не ходят и приходить забирать свои монетизированные льготы они технически не могут. Есть способ - оформить нотариальную доверенность на человека, который технически сожет ходить за деньгами, например, на моего коллегу. Для того, чтобы это сделать надо вызвать нотариуса домой (так как льготники не ходят), но вызов этот стоит немаленьких денег, превышающих выручку за льготы. В итоге, мой коллега не монетизирует льготы, так как выгода от этой монетизации отрицательная.
Немногим более интересна моя ситуация. Мне, как многодетному отцу положен льготный проезд и этот проездной надо получать в соцзащите. В целом неплохая схема, если бы я не жил в пригороде и не работал в городе, причем от места жительства до места работы я добираюсь 2 часа. Соцзащита работает только по будням и не с 6 утра. Технически это означает, что для получения этот проездного, а он может быть получен только мной, так как я за него расписываюсь, я раз в месяц должен приходить на работу на 3 часа позже. В целом не проблема отпрашиваться, но все же неудобно. Почему бы эту карточку не давать в кассах метрополитена, или по месту работы, или сделать, чтобы соцзащита работала в субботу? Еще интересный момент: я езжу на электричке и не метро, причем, электричка в два раза дороже метро, на метро у меня есть льгота, а не электричку нет (интересно, да?). В данной схеме, мне проще не мотаться за этим проездным ежемесячно, чем отпрашиваться с работы и сидеть в этих очередях в соцзащите.
Но наибоее интересна схема льготных коммунальных платежей. Как многодетные родители мы можем платить 50% за квартиру, за свет и за воду. Но как это организовано (!): я плачу 100%, потом эти квиточки копирую и несу, вместе с копиями, в соцзащиту. После этого, когда-то на счет в Сбербанке мне вернутся переплаченные 50%. У меня нет слов критиковать эту схему, мне кажется, что она специально придумана такой, чтобы этим никто не пользовался - процесс слишком дорог, по сравнению с его результатом. Криптография, одним словом.
Thursday, July 2, 2009
Криптография в жизни
Posted by
Sergey Soldatov
1 comments
Wednesday, June 10, 2009
О "неправильном" вредоносном ПО, продолжение.
Я искренне верю, что это - последняя статья в этой печальной серии, поскольку мне действительно не хочется писать про одно и то же. Но здесь, при всей своей печальности ситуация более чем смешная.
Корпоративная служба безопасности, анализируя статистику вирусных заражений обнаружила, что существует ряд компьютеров, которые постоянно заражаются вирусами, несмотря на то, что на них стоит и исправно работает антивирусное ПО. Корреляция с журналами системы контроля доступа к периферийным устройствам показала, что заражающийся компьютер на съемные носители постоянно записывает autorun.exe размером 37376 байт. При этом, наше антивирусное ПО никак не реагирует на этот autorun.exe. Согласитесь, подозрительно. Проверка альтенативным антивирусом обнаружила:
Еще более интересно, что оба файла имели одинаковый размер (те самые 37376) и одинковую сумму MD5 (ca82b32253f1cb11cf9e5ff83d87e01a):
Все банально и просто: вот оно, Virustotal подтвердил:
| Антивирус | Версия | Обновление | Результат | |||
| a-squared | 4.5.0.18 | 2009.06.09 | P2P-Worm.Win32.Socks!IK | |||
| AhnLab-V3 | 5.0.0.2 | 2009.06.08 | Win32/Socks.worm.37376 | |||
| AntiVir | 7.9.0.180 | 2009.06.08 | Worm/Socks.FO | |||
| Antiy-AVL | 2.0.3.1 | 2009.06.08 | Worm/Win32.Socks | |||
| Authentium | 5.1.2.4 | 2009.06.08 | W32/Backdoor2.DJBR | |||
| Avast | 4.8.1335.0 | 2009.06.08 | Win32:Trojan-gen {Other} | |||
| AVG | 8.5.0.339 | 2009.06.08 | Win32/Heur | |||
| BitDefender | 7.2 | 2009.06.09 | Worm.Generic.28689 | |||
| CAT-QuickHeal | 10.00 | 2009.06.09 | I-Worm.Socks.fo | |||
| ClamAV | 0.94.1 | 2009.06.08 | - | |||
| Comodo | 1289 | 2009.06.09 | Worm.Win32.Socks.~C | |||
| DrWeb | 5.0.0.12182 | 2009.06.09 | Win32.HLLW.Alupco.2 | |||
| eSafe | 7.0.17.0 | 2009.06.07 | Suspicious File | |||
| eTrust-Vet | 31.6.6548 | 2009.06.08 | Win32/Ruternam.CZ | |||
| F-Prot | 4.4.4.56 | 2009.06.08 | W32/Backdoor2.DJBR | |||
| F-Secure | 8.0.14470.0 | 2009.06.08 | P2P-Worm.Win32.Socks.fo | |||
| Fortinet | 3.117.0.0 | 2009.06.08 | W32/Socks.FO!worm.p2p | |||
| GData | 19 | 2009.06.09 | Worm.Generic.28689 | |||
| Ikarus | T3.1.1.59.0 | 2009.06.09 | - | |||
| K7AntiVirus | 7.10.757 | 2009.06.08 | P2P-Worm.Win32.Socks | |||
| Kaspersky | 7.0.0.125 | 2009.06.09 | P2P-Worm.Win32.Socks.fo | |||
| McAfee | 5640 | 2009.06.08 | potentially unwanted program Generic PUP | |||
| McAfee+Artemis | 5640 | 2009.06.08 | potentially unwanted program Generic PUP | |||
| McAfee-GW-Edition | 6.7.6 | 2009.06.09 | Worm.Socks.FO | |||
| Microsoft | 1.4701 | 2009.06.08 | VirTool:Win32/Obfuscator.BO | |||
| NOD32 | 4139 | 2009.06.08 | Win32/Zalup | |||
| Norman | 6.01.09 | 2009.06.08 | W32/Socks.BT | |||
| nProtect | 2009.1.8.0 | 2009.06.09 | Worm/W32.Socks.37376 | |||
| Panda | 10.0.0.14 | 2009.06.08 | W32/Socks.E.worm | |||
| PCTools | 4.4.2.0 | 2009.06.06 | - | |||
| Prevx | 3.0 | 2009.06.09 | High Risk Cloaked Malware | |||
| Rising | 21.33.10.00 | 2009.06.09 | - | |||
| Sophos | 4.42.0 | 2009.06.09 | Troj/Agent-HMB | |||
| Sunbelt | 3.2.1858.2 | 2009.06.09 | P2P-Worm.Win32.Socks.fo | |||
| Symantec | 1.4.4.12 | 2009.06.09 | W32.Mandaph | |||
| TheHacker | 6.3.4.3.342 | 2009.06.08 | W32/Socks.fo | |||
| TrendMicro | 8.950.0.1092 | 2009.06.08 | WORM_SOCKS.CN | |||
| VBA32 | 3.12.10.6 | 2009.06.08 | P2P-Worm.Win32.Socks.fo | |||
| ViRobot | 2009.6.8.1773 | 2009.06.08 | - | |||
| VirusBuster | 4.6.5.0 | 2009.06.08 | Worm.P2P.Socks.EY |
| Дополнительная информация |
| File size: 37376 bytes |
| MD5...: ca82b32253f1cb11cf9e5ff83d87e01a |
| SHA1..: ab73e86f1bbc3c27cfc1bf59424b8c6c682138ef |
| SHA256: b7a70b27c031e909ce6b83424f9689820b8a9eae588ae13d2161f38d2f79d57a |
| ssdeep: - |
| PEiD..: - |
| TrID..: File type identification |
| PEInfo: PE Structure information |
| PDFiD.: - |
| RDS...: NSRL Reference Data Set |
| Prevx info: http://info.prevx.com/aboutprogramtext.asp?PX5=D23C58B2006B8FC292B400BD8F4B1A00FBB8E8A8> |
Видим, что написано у McAfee? Потенциально нежелательное ПО! Т.е. "потенциально нежелательное ПО" превращает мою машину в рассадник вирусов и прочего фактические нежелательного ПО.
Почитаем на Symantec: "W32.Mandaph is a worm that spreads through mapped and fixed drives and may download additional malware on to the compromised computer".
От себя хочу уточнить, что это этот червяк не просто "может" загружать вредоносный код, а фактически это делает, что мы и наблюдаем. И при всем при этом (самостоятельное распространение, загрузка из Интернет прочего вредоносного ПО) McAfee не удаляет это из принципиальных соображений - ответ от поддержки в данном случае был ровно как и в этом: докупите модуль "Anti-Spyware Enterprise" и все будет хорошо. Бред. Мне, как конечному пользователю, все равно, как классифицировал вендор эту нечисть, поставив антивирус, я хочу, чтобы он делал свою работу!
Вообще, в моей практике я видел массу случаев, когда антивирус не спасал. У коллеги начали уже появляться мысли о смене антивирусного вендора, но лично я не поддерживаю эту идею. Мое мнение таково, что какой бы не был антивирусный вендор, все равно будут находиться "экземпляры", которые он не определяет. Проблема здесь в концепции "Enumerated Badness", которая уже давно устарела. Наступит время, когда размер сигнатурных баз привысит порог, позволяющий антивирусу работать "в реальном времени" (да и вообще работать), и это время не за горами. Мой небольшой опыт использования CureIT показал, что за последние 2 года его размер увеличился почти в 3 раза! В общем, прогноз таков, что сигнатурные антивирусы доживают последние времена, поэтому, менять вендора не имеет смысла.
Что делать? Скажу банальные слова: используйте эшелонированную оборону: несколько систем безопасности и коррелируйте их журналы. Каждая система имеет свои приемущества, они дополнять друг друга.
Posted by
Sergey Soldatov
0
comments
Labels: Malware
Tuesday, June 2, 2009
Гибкость и сложность
Где начало того конца, которым оканчивается начало?
Козьма Прутков. Мысли и афоризмы.
Нам часто приходится выбирать то или иное техническое решение на основании сравнения с аналогами. Как правило, при этом в приоритете оказываются решения, предоставляющие наибольшую гибкость: больше возможностей по настройке, больше функциональная область покрытия. При этом на этапе выбора никто не задумывается, что оборотная сторона гибкости - сложность настройки и, как следствие, последующей поддержки и обслуживания.
Не буду много вещать в защиту вышеупомяноутого тезиса, думаю, это очевидно: взяв самое гибкое из возможных решений, позволяющее удовлетворить любые требования к системе, - IDE , мы сталкиваемся с высокой сложностью настройки нашего решения (в данном примере - с необходимостью программирования). Пример представляет собой некую крайность, но позволяет понять суть. Как же выбрать эту "золотую середину", это тонкое лезвие бритвы, эту красоту баланса гибкости и сложности?
Прежде всего давайте поймем, почему же мы вожделеем гибкость.
1. На момент выбора решения не известно что конкретно хочется. Действительно, аппетит появляется во время еды. Да, я знаю, что во всех книжках написано, что подход такой неправильный и что надо на момент выбора решения знать все, что хочется, но на практике, к сожалению, это так.
2. В России очень трудно прогнозировать. На практике все меняется самым непредполагаемым образом: вчера мы поклонялись коммунистам и были пионерами, сейчас узнали, что коммунисты были нехорошие люди, так как уничтожили духовность.... Как следствие, приходится закладываться на все "случаи жизни" - вместо восседания на одной бочке с порохом, сидеть на двух, а может, и больше, чтобы, в случае взрыва одной, успеть перескочить на следующую.
Что можно с этим поделать?
Мне кажется, что лучший вариант здесь либо первоначальное пилотное внедрение (чтобы понять аппетит), либо стого ограничить внедряемый функционал и согласовать его на максимально высоком уровне. Последнее - очевидное требование, которое по-хорошему надо выполнять всегда, но хочется же все и сразу...
Всегда помние, что увеличивая гибкость, вы увеличиваете сложность, с которой затем на протяжении всего жизненного цикла надо будет что-то делать. Оценивайте потребность в той или иной "штуке" и затраты на нее и ее поддержку в будущем.
Posted by
Sergey Soldatov
4
comments
Labels: Architecture, Enterprise Security, Project Management, Russia, Technology
Friday, May 29, 2009
Quick check of lan subnet
Simple script (linux, bash, samba3) for quick checking of lan subnet for:
1. SMS-agent properly work at all objects of subnet (query for sms report look at the end of post);
2. List of local administrators group;
3. List of shares.
NET="192.168.1.0/24"Query for sms report:
NET_SMS=`echo $NET | sed s/\.0\\\/.*//g`
DIR=/tmp/`echo $NET_SMS | sed s/192.168.//`
RES="$DIR/RESULT"
PASS='P@ssword'
export LANG=en_US.CP1251
rm -Rf $DIR
mkdir $DIR
wget --no-proxy --http-user="/ " --http-password=$PASS "http:// /SMS/Report.asp?ReportID= &variable=$NET_SMS.%25" -O - | \
lynx -stdin -dump -width=380 | grep Microsoft | sed s/Microsoft.*192.168./192.168./g | sed 's/\(192.168.[0-9\.]*\).*/\1/g' | sort | uniq >> $DIR/sms;
nmap -sP --max-retries 10 $NET -oG $DIR/nmap_ping.grep | tee -a $DIR/nmap_ping
cat $DIR/nmap_ping.grep | grep Host | awk '{print $2}' | nmap -sV -PN -p 23,22,21,445,139,80,8081,3389,53,389,3268,9100 -iL - -oG $DIR/nmap.grep | tee -a $DIR/nmap
echo "############################################################" > $RES
echo "# Computers not connectet to SMS #" >> $RES
echo "############################################################" >> $RES
echo >> $RES
cat $DIR/sms | awk -F "192" '{print "192"$2" ("}' | grep -v $DIR/nmap.grep -f - | grep Host >> $RES
echo >> $RES
echo "#############################################################" >> $RES
echo "# Local admins #" >> $RES
echo "#############################################################" >> $RES
echo >> $RES
for i in `cat $DIR/nmap.grep | grep 445/open | grep Host | awk '{print $2}'`; do
net rpc group MEMBERS Administrators -U%$PASS -W -S $i
EXITSTATUS="$?"
if [ "$EXITSTATUS" -eq "255" ]; then
echo "== $i ==" >> $RES;
echo "Can't logon to host">> $RES
echo >> $RES;
else
ADMINS=""
ADMINS=`net rpc group MEMBERS Администраторы -U%$PASS -W -S $i | egrep -v "Domain Admins|Adm"`
if [ -n "$ADMINS" ]; then
echo "== $i ==" >> $RES;
echo "$ADMINS" >> $RES;
echo >> $RES;
fi
ADMINS=""
ADMINS=`net rpc group MEMBERS Administrators -U%$PASS -W -S $i | egrep -v "Domain Admins|Adm"`
if [ -n "$ADMINS" ]; then
echo "== $i ==" >> $RES;
echo "$ADMINS" >> $RES;
echo >> $RES;
fi
fi
done
echo "#############################################################" >> $RES
echo "# Network shares #" >> $RES
echo "#############################################################" >> $RES
echo >> $RES
for i in `cat $DIR/nmap.grep | grep 445/open | grep Host | awk '{print $2}'`; do
net rpc share -U%$PASS -W -S $i
EXITSTATUS="$?"
if [ "$EXITSTATUS" -eq "255" ]; then
echo "== $i ==" >> $RES;
echo "Can't logon to host">> $RES
else
SHARES=""
SHARES=`net rpc share -U%$PASS -W -S $i | egrep -v "C\\\\$|D\\\\$|E\\\\$|ADMIN\\\\$|print\\\\$|NETLOGON|SYSVOL"`
if [ -n "$SHARES" ] ; then
echo "== $i ==" >> $RES;
echo "$SHARES" >> $RES;
echo >> $RES;
fi
fi
done
SELECT distinct SYS.Netbios_Name0, SYS.User_Name0, SYS.User_Domain0, SYS.Resource_Domain_OR_Workgr0, OPSYS.Caption0 as C054, OPSYS.Version0, MEM.TotalPhysicalMemory0, IPAddr.IP_Addresses0, WS.LastHWScan
FROM v_R_System SYS
LEFT JOIN v_RA_System_MACAddresses MAC on SYS.ResourceID = MAC.ResourceID
LEFT JOIN v_RA_System_IPAddresses IPAddr on SYS.ResourceID = IPAddr.ResourceID
LEFT JOIN v_GS_X86_PC_MEMORY MEM on SYS.ResourceID = MEM.ResourceID
LEFT JOIN v_GS_COMPUTER_SYSTEM CSYS on SYS.ResourceID = CSYS.ResourceID
LEFT JOIN v_GS_PROCESSOR Processor on Processor.ResourceID = SYS.ResourceID
LEFT JOIN v_GS_OPERATING_SYSTEM OPSYS on SYS.ResourceID=OPSYS.ResourceID
left JOIN v_GS_DISK Pdisk ON SYS.ResourceID = Pdisk.ResourceID
LEFT JOIN PC_BIOS_DATA Bios on SYS.ResourceID = Bios.MachineID
LEFT JOIN v_GS_WORKSTATION_STATUS WS on SYS.ResourceID = WS.ResourceID
WHERE IPAddr.IP_Addresses0 like @variable and WS.LastHWScan > DATEADD(week,-4,GETDATE())
ORDER BY SYS.Netbios_Name0, SYS.Resource_Domain_OR_Workgr0
Posted by
Igor Gots
0
comments
Labels: Audit
Tuesday, May 19, 2009
On CCTV Cameras
Actually, I'm a fan of Schneier and I'm agree almost with every his idea. He mastered the art of speaking simply about difficult things in Applied Cryptography (Russian translation to my mind is very good) and The Psychology of Security is one of the most interesting security publication I've ever seen. But I let myself to disagree with this. Before explaining my thoughts I'd like to confess that I work in field of information security and physical security is not where I'm professional, but I think that Shon Harris' physical security domain is enough to have an opinion on this topic, also CCTV is not difficult to understand - that's why I'm writing this post.
To my mind saying that CCTV cameras are ineffective is the same as saying that IDS is dead. Well, I was disagree with this declaration in 2003 and haven't changed my mind now. Every technology in amateur's hands is ineffective and it's not the matter of goodness or badness of technology. But let's go further and look on some quotations.
"Most CCTV footage is never looked at until well after a crime is committed". Yes, that's right, but why in this case nobody challenge the idea of collecting systems logs? Of course it's better when every camera picture is analyzed by operator in real time and in most cases known to me when one wants to use cameras more effectively it's done in that way: operator can remotely operate camera to clarify image of interesting object or subject. I predict your objections about bad comparison camera footage with system logs because by system logs in most cases you can exactly say what had happened and video is not able to provide you with the same rate of assurance because "Lighting is bad and images are grainy, and criminals tend not to stare helpfully at the lens". But this is still better than nothing because: this deter huge per cent of "kids", this still can help in postmortem analysis in case of the same "kids". Stored somewhere CCTV recordings is not a weapon against "professional criminals". It's all about the same costs of threats and costs of countermeasures: professionals can be caught only by professions with comprehensive tools and methods. The same idea with IDS - for example, you can simply evade scanning detection by increasing timeouts.
"The solution isn't for police to watch the cameras". Again this is the matter of costs. Let's assume one policeman can watch 5 cameras operating in 5 different places. It's obvious that one man and 5 cameras cost less than 5 men communicating with each other. If policeman can operate cameras: turn it around, change look-up angle, change focal distance, etc. and perform this professionally, to my mind, the effect will be the same as five different policemen walking around.
"Criminals know this, and can easily adapt by moving their crimes to someplace not watched by a camera" . Let's cameras change their look-up angle randomly or use fish-eye, or both, use remotely operated cameras.
"The funds spent on CCTV cameras would be far better spent on hiring experienced police officers" Nobody says that if we use CCTV we can allow ourselves to hire unexperienced officers. Moreover, the more complicated systems we use, the more professional staff we need. Amateur will not see crime and it doesn't matter whether he or she looks "by eyes" or through camera. We should always educate security personnel because attacking techniques, tools, aims, etc. are changing.
"But the question really isn't whether cameras reduce crime; the question is whether they're worth it." Completely agree! As I said earlier it depends on threat and possible impact. Before choosing countermeasure/control it's always good idea to perform Risk Assessment and be sure that cost of countermeasure is less then possible damage. In one situation just dumb cameras will be enough, in others - advanced remotely controlled cameras is OK, and in case of high probability of professional criminals attack you need to use professionals to withstand i.e. only highly educated police officers can help you.
Posted by
Sergey Soldatov
1 comments
Labels: Physical Security
Thursday, May 14, 2009
Бизнес для Бизнеса
Мы часто слышим упоминания о том, что большинство проблем в безопасности тех или иных программных продуктов так или иначе связаны с недочетами, допущенными при разработке. Действительно, многочисленные уязвимости, закрываемые бесконечными заплатками, по сути своей являются в большинстве случаев попросту ошибками программистов. Не стоит забывать и об архитектурных просчетах, которые уже простым патчем не поправить и, как следствие, такого рода ошибки исправляются новыми релизами ПО.
Вроде как всем понятна проблема и, если верить словам, все хотят поправить ситуацию: лучше продумывать архитектуру, более тщательно подходить к разработке, лучше тестироваться и т.п. НО, не является секретом тот факт, что для того, чтобы какое-либо изменение произошло, как минимум важна заинтересованность кого-либо в этом изменении. Так кто же заинтересован в разработке качественного ПО?
Разработчик? - Нет. Предположим гипотетически, что кто-то разработал ПО, которое не нуждается в постоянных обновлениях (исправлении ошибок), выпуске новых релизов (добавление новых возможностей и исправление архитектурных просчетов). Такой разработчик сможет заработать только однажды, продав право пользования своим ПО. Целый пласт доходов, связанных необходимостью поддержки, будет недоступен.
Еще один момент, который стоит учесть - это то, что есть некая зависимость количества программых ошибок от объема кода. В двух словах: чем больше кода, тем больше в нем ошибок. Как мне кажется, без ущерба для смысла, можно сказать и так: чем меньше ошибок, тем меньше кода. Наш разрабочик написал код с примерно нулевым количеством ошибок, значит его код невелик, а, следовательно, не велика и функциональность его кода. Поскольку, как правило, потребитель хочет "таблетку от всех болезней", не функциональный продукт будет плохо продаваться, дешево стоить, - в общем, доход от его продаж будет невелик, что не выгодно разработчику. Итого, как это не прискорбно, разработчик будет писать большой многофункциональный код, с большим количеством багов, которые потом будет исправлять во время всего жизненного цикла своего детища. При этом, безусловно, зарабатывая на этом.
Отрасль информационной безопасности? - Нет. Целый ряд уязвимостей будет искоренен как класс. Не будут нужны куча административных и технических контрмер, предпринимаемых в настоящее время для снижения ущерба от использования уязвимого ПО. Будут не нужны люди, задействованные в реализации этих контрмер: не нужны исследовательские институты, занимающиеся поиском уязвимостей, не будут нужны различные сканеры безопасности и те, кто ими пользуются, не будут нужны сложные процессы по управлению обновлениями ПО, их тестированию, пр.
В общем, к сожалению, только потребитель в проигрыше. Что, как это не цинично звучит, в общем-то нормально. Ведь кто-то должен оплачивать всех перечисленных выше....
Я писал применительно к программногому обеспечению, но, в целом, как это не прискорбно, принцип работает практически везде: АвтоВАЗ делает плохие машины и при этом еще зарабатывает на сервисе и запчастях, ресурс которых значительно ниже чем у кого бы то ни было, как, собственно, и самого автомобиля; средняя выслуга современной стиральной машины, из собственного опыта, не более 5 лет, тогда как у меня есть знакомые, которые покупали стиральную машину 15 лет назад (!) и она до сих пор исправно работет - действительно, производителю выгодно, чтобы я покупал его продукт каждые 5 лет, а не раз на всю жизнь.
Можно подумать о каких-либо мероприятиях по противодействию. Наверно, здесь поможет сертификация, но опять же сложность современных продуктов не позволяет обеспечить должную глубину проверки, а грубая поверхностная проверка не гарантирует желаемого качества.
Posted by
Sergey Soldatov
6
comments
Labels: Architecture, Operating Systems, Security, Software
Thursday, March 19, 2009
Контроль сменных носителей
Контроль сменных носителей - тема нынче весьма популярная и обсуждаемая.
Но бесплатных средств, работающих под ОС Windows и более менее управляемых в небольшой сети, найти не удалось.
Платные средства дешевле 500 рублей за рабочее место не существуют, что в нынешних условиях непосильные деньги для многих компаний. Посему на коленке был сделан небольшой скрипт, который каждый час запускается на АРМ пользователей. Запуск и его контроль осуществляется средствами Microsoft SMS (который уже есть в наличии).
Данный скрипт позволяет довольно успешно контролировать работу сменных носителей в небольшом домене, содержащем чуть более 150 рабочих станций и серверов.
Скрипт может запускаться так же средствами групповой политики Active Directory, но механизм этот не столь гибок, сколь хотелось бы.
Небольшие комментарии по коду:
- первый цикл определяет имя пользователя вошедшего в систему
- второй цикл определяет входит ли пользователь в доменную группу "UsbFullControl", назначение группы понятно из её названия
- третий цикл делает то же для группы "UsbReadOnly"
- если пользователь не входит ни в одну из групп, значит ему не повезло - выключается возможность работы со всеми сменными устройствами
- иначе делаются настройки облегчающие работу с флешками и разрешающие работу с дискетами и оптическими дисками
- Для работы скрипта нужны административные права, либо права SYSTEM, то есть он не эффективен в сети, где большое число пользователей имеет права локальных администраторов.
Источники идеи уже не найду. Среди них результаты поиска по словам "usb control security", а так же материалы с сайта Microsoft.
---------------
@ECHO OFF
:: delims is a TAB followed by a space
FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName') DO SET LastLogon=%%B
For /F "tokens=1" %%A in ('net user %LastLogon% /domain ^| find /i "UsbFullControl"') Do Set Group=%%A
IF NOT "%Group%"=="" GOTO UsbFullControl
For /F "tokens=1" %%A in ('net user %LastLogon% /domain ^| find /i "UsbReadOnly"') Do Set Group=%%A
IF NOT "%Group%"=="" GOTO UsbReadOnly
:UsbDenyAll
move %SystemRoot%\Inf\Usbstor.pnf %SystemRoot%\Inf\Usbstor.pnf.old
move %SystemRoot%\Inf\Usbstor.inf %SystemRoot%\Inf\Usbstor.inf.old
> "%Temp%.\usb.reg" echo REGEDIT4
>>"%Temp%.\usb.reg" echo.
>>"%Temp%.\usb.reg" echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Flpydisk]
>>"%Temp%.\usb.reg" echo "Start"=dword:00000004
>>"%Temp%.\usb.reg" echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Sfloppy]
>>"%Temp%.\usb.reg" echo "Start"=dword:00000004
>>"%Temp%.\usb.reg" echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdrom]
>>"%Temp%.\usb.reg" echo "Start"=dword:00000004
>>"%Temp%.\usb.reg" echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsbStor]
>>"%Temp%.\usb.reg" echo "Start"=dword:00000004
>>"%Temp%.\usb.reg" echo [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\StorageDevicePolicies]
>>"%Temp%.\usb.reg" echo "WriteProtect"=dword:00000001
>>"%Temp%.\usb.reg" echo.
start /wait regedit /s "%Temp%.\usb.reg"
del "%Temp%.\usb.reg"
GOTO End
:UsbFullControl
move %SystemRoot%\Inf\Usbstor.pnf.old %SystemRoot%\Inf\Usbstor.pnf
move %SystemRoot%\Inf\Usbstor.inf.old %SystemRoot%\Inf\Usbstor.inf
> "%Temp%.\usb.reg" echo REGEDIT4
>>"%Temp%.\usb.reg" echo.
>>"%Temp%.\usb.reg" echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Flpydisk]
>>"%Temp%.\usb.reg" echo "Start"=dword:00000003
>>"%Temp%.\usb.reg" echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Sfloppy]
>>"%Temp%.\usb.reg" echo "Start"=dword:00000003
>>"%Temp%.\usb.reg" echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdrom]
>>"%Temp%.\usb.reg" echo "Start"=dword:00000003
>>"%Temp%.\usb.reg" echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsbStor]
>>"%Temp%.\usb.reg" echo "Start"=dword:00000003
>>"%Temp%.\usb.reg" echo [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\StorageDevicePolicies]
>>"%Temp%.\usb.reg" echo "WriteProtect"=dword:00000000
>>"%Temp%.\usb.reg" echo.
start /wait regedit /s "%Temp%.\usb.reg"
del "%Temp%.\usb.reg"
GOTO End
:UsbReadOnly
move %SystemRoot%\Inf\Usbstor.pnf.old %SystemRoot%\Inf\Usbstor.pnf
move %SystemRoot%\Inf\Usbstor.inf.old %SystemRoot%\Inf\Usbstor.inf
> "%Temp%.\usb.reg" echo REGEDIT4
>>"%Temp%.\usb.reg" echo.
>>"%Temp%.\usb.reg" echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Flpydisk]
>>"%Temp%.\usb.reg" echo "Start"=dword:00000003
>>"%Temp%.\usb.reg" echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Sfloppy]
>>"%Temp%.\usb.reg" echo "Start"=dword:00000003
>>"%Temp%.\usb.reg" echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdrom]
>>"%Temp%.\usb.reg" echo "Start"=dword:00000003
>>"%Temp%.\usb.reg" echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsbStor]
>>"%Temp%.\usb.reg" echo "Start"=dword:00000003
>>"%Temp%.\usb.reg" echo [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\StorageDevicePolicies]
>>"%Temp%.\usb.reg" echo "WriteProtect"=dword:00000001
>>"%Temp%.\usb.reg" echo.
start /wait regedit /s "%Temp%.\usb.reg"
del "%Temp%.\usb.reg"
GOTO End
:End
Posted by
Igor Gots
2
comments
Labels: Client security, Operating Systems