Tuesday, July 29, 2014

Свобода СМИ vs. Цензура

Я и сам не раз писал о важности свободы доступа к информации. Однако, Истина, как и красота, - это лезвие бритвы. Очень важно это понимать, чувствовать и не сломать, не нарушить тот баланс противоположностей. Поэтому сегодня я расскажу о том, как важна Цензура, - мера ограничения "свободы слова". Что такое "правильно", а что такое "неправильно", по-моему мы уже разбирали, поэтому не будем останавливаться на этом, ну, а если остановиться надо, - остановимся в другом посте, дайте знать.

Очевидно, что мир ровно таков, каким мы его видим, т.е. таков, как мы интерпретируем поступающую к нам информацию о нем. Наша интерпретация зависит от множества факторов и немаловажным среди них является наша изначальная подготовка в предметной области. Понятно, что если брать в целом аудиторию СМИ, то мы получаем весьма неоднородную массу абсолютно различных людей с разными способностями интерпретации информации. Как следствие, не все понимают (интерпретируют) информацию одинаково, а если брать во внимание, что Истина - немногообразана, получаем, что не все воспринимают информацию корректно. Некорректное понимание может вызвать некорректные эмоции и, безусловно, некорректные действия (поэтому СМИ - своеобразное оружие, но сейчас не об этом). Именно по этой причине у нас есть возрастной ценз на информацию: мы не показываем фильмы для взрослых и сцены насилия детям и совсем не потому, что там неправда, а именно потому что они не готовы воспринять (интерпретировать) эту информацию корректно. Развитие этого - любая информация имеет свою аудиторию, т.е. группу людей, способных ее воспринять корректно.

Если брать во внимание широкую аудиторию СМИ, то именно по этой причине не надо перегибать палку "свободы слова", не надо выливать на неподготовленную аудиторию информацию, которая может быть некорректно интерпретирована. Это и есть цензура и цель ее не "сделать из нас дураков" или "зомбировать" или еще что-то подобное, а обеспечить безопасность, стабильность Общества (кстати - основная задача любого Государства). Многие вещи сложны и неочевидны, есть множество степеней познания действительности, поэтому не надо под флагом свободы слова рассказывать "правду", также как не надо несовершеннолетним показывать порно, несмотря на то, что это действительно правда.

Sunday, July 13, 2014

Простейший способ отключения McAfee VirusScan

Иногда есть потребность поработать с различного рода инструментами, а антивирус мешает.
Первая мысль - пойти в Сервисы и отключить сервис "McAfee McShield" - если верить комментарию к сервису, это как раз то, что отвечает за сканирование при доступе (On-Access Scanner). Однако, возможность выключить через интерфейс недоступна и режим запуска тоже поменять не получается.
Что ж, ищем McShield.exe среди процессов в Таскменеджере - он там находится, убиваем - убивается. Радуемся, работаем, но в какой-то момент McShield.exe снова поднимается и все портит. Разбираться кто его поднимает - лень, но надо все-таки как-то сделать, чтобы не поднялся.
Решение до безобразия просто - переименовать файлик McShield.exe так, чтобы пытающийся поднять его не нашел. 
Итак, файлик "C:\Program Files (x86)\McAfee\VirusScan Enterprise\x64\McShield.exe" (путь можно посмотреть в свойствах сервиса "McAfee McShield") переименовываем в то, что нравится, - я добавил единичку в конце. Больше McAfee меня не беспокоил.

Важно: Когда закончили свои занимательные упражнения - обязательно переименуйте файлик обратно, - крайне не рекомендую отключать антивирус навсегда!

Thursday, July 10, 2014

Измена или глупость?

Не перестаю удивляться странностям государственных подходов к ИБ. То мы всей страной покупаем и внедряем Apple с iOS, а после появления Сноудена, переходим на Samsung с Android... хотя ежу понятно, беря во внимание что Samsung - южнокорейская фирма, а Android - производства Google, вероятность существования там закладок ни чуть не меньше, чем в iOS. Полагаю, была команда что-то сделать - что-то сделали (стандартный министерский подход: ориентация не на результат (как видно, - он тот же: закладки американской фирмы Apple заменили на закладки американской фирмы Google), а на процесс: по проблеме что-то сделали).

И вот новый перл: товарищи сделали отечественный планшет на отечественной ОС. В заметке есть фрагмент, который только сейчас открыл мне глаза. Основное выделено жирным:
"....Причем на фоне череды скандалов, которые сотрясают Европу (прослушивание телефона Меркель, как вариант), понятно, что закладки в подобной технике есть по умолчанию. Выбор поставщика, который имеет давние и тесные отношения с Министерством обороны США, выглядит, как минимум, странно, хотя тут самое время вспомнить о вредителях и осознанных шагах, направленных на подрыв обороноспособности страны. Хотя это может быть и просто обыкновенное отсутствие профессионализма в своей области, что еще страшнее."
В данном случае страшнее как раз не отсутствие профессионализма (или откровенная глупость), а напротив - умышленное вредительство.
Когда я только начинал взаимодействовать с гос* я не раз удивлялся тому насколько непрофессиональны используемые подходы, насколько неэффективные решения принимаются. Я удивлялся тому, почему из множества различных вариантов решения проблемы, в госкомпании выбирают наихудший сценарий, и как все эти люди, которые эти решения принимают, смогли так сконцентрироваться: все вокруг государства и ключевых государственных предприятий. Да и не могут быть люди настолько непрофессиональны... И только теперь до меня дошло: действительно, люди не могут быть настолько непрофессиональны, напротив, они профессионалы, но у них другая цель - вредить Стране. Это заслацы-вредители, которых внедрили во все сферы наших высоких технологий, поставили у руля подразделений ИБ крупнейших госкомпаний, внедрили в Регуляторов. Тогда все сходится: глупые, неэффективные решения имеют цель разрушить ИТ и ИБ Страны (по крайней мере не развиваться в ногу со временем) и маскируются под непрофессионализм, что создает почву для бесконечного троллинга в Сети (ситуация чем-то напоминает многочисленные высказывания Дженифер Саки об Украине, России, Белоруссии и мире вообще: как бы не комичны были эти заявления, США продолжают творить что хотят. Иногда я думаю, что США специально провели конкурс по всей Америке, чтобы найти госпожу Саки и выставить ее на всеобщее обозрение, и тем самым продемонстрировать всему миру, что им абсолютно фиолетово что о них думают в мире и ничто их не остановит (как не остановит американский флот отсутствие морских границ у Белоруссии). Теперь все сходится: решения, которые порою идут в разрез с общей логикой (тут даже не до профессионализма) также легко объясняются злым умыслом.
Остается ждать и надеяться, что когда-нибудь на место этих вредителей, маскирующихся под непрофессионалов придут профессионалы-патриоты, и все будет по-другому, лучше, и нам не придется краснеть за супер-пупер защищенный планшет, с которого даже не потрудились оттереть надпись "Motorola".

Monday, July 7, 2014

Перлюстрация почты. Заметка 2.

Итак, вся почта, отправляемая сотрудниками, складывается в каталог /var/mail/mailarchive, о чем мы написали в файле /etc/exim4/systemfilter.txt.
Почта раскладывается по каталогам, имена которых равны электронному адресу. 
Чтобы прочесть накопленное можно переименовать собранные файлы в файлы с расширением eml и скормить их ОС Windows.
Но мне больше нравится следующий способ:
Нужные файлы я копирую в специально выделенную папочку, при этом переименовывая их в файлы с цифровым названием:
let j=1; for i in `ls | grep -v make`; do mv $i $j; let j=$j+1; done; chmod a+r *
Затем либо на сервере либо удаленно запускаем почтовый клиент claws-mail который настраиваем таким образом, чтобы "специально выделенная папочка" являлась одним из каталогов, где хранится почта. У меня это сделано с сервера сбора почты на локальную машину через sshfs. Наслаждаемся интерфейсом.
А есть еще способ, который позволяет вам не прикасаться к собранным данным.
В /etc/crontab добавляем строку:
50 23   * * *   root    /mailmonitor_copy
Сам скрипт mailmonitor_copy наполняем следующими строчками:
#!/bin/bash
UserName="VICTIM_WITHOUT_DOMAIN"
Recipient="READER_WITHOUT_DOMAIN"

let j=1;

for i in `find  /var/mail/mailarchive/$UserName@DOMAIN/new -name *.`hostname`* -mtime -1`; do
    cp $i /tmp/$j.eml;

    PATH/mail -f $Recipient@DOMAIN -t $Recipient@DOMAIN -s "message $j of user $UserName" -a /tmp/$j.eml
    rm /tmp/$j.eml;
    let j=$j+1;
done

if [[ $j == 1 ]]; then
   
/mail -f  $Recipient@DOMAIN -t $Recipient@DOMAIN -s "No mail from $UserName at `date +%F`"
fi


И под завязку скрипт, который отправляет почту (он в предыдущем скрипте отмечен как PATH/mail и взят откуда-то с просторов интернета и доработан много лет назад. Силен он тем, что позволяет отправлять почту с приложениями.

#!/usr/bin/perl

use Net::SMTP;
use Getopt::Std;

$boundary="Message-Boundary-20030214";

getopt('ftsba', \%args);

if (!($args{f} and $args{t} and $args{s} )) {
    usage();
    exit;
}

if ($args{f}) {
    $from = $args{f};
}
if ($args{t}) {
    $to = $args{t};
}
if ($args{s}) {
    $subject = $args{s};
}
if ($args{b}) {
    $plain_text_message = $args{b};
}
if ($args{a}) {
    $attachment = $args{a};
    @_array = split("/", $attachment);
    $attachment_name = $_array[scalar(@_array)-1];
}

# Constructors
$smtp = Net::SMTP->new('localhost');

$smtp->mail($from);
$smtp->to($to);

push(@message, "Date: ".`date --rfc-822`);
push(@message, "To: $to\n");
push(@message, "From: $from\n");
push(@message, "Subject: $subject\n");
push(@message, "MIME-Version: 1.0\n");

#push(@message, "Content-Type: text/plain;");
#push(@message, "        charset=\"koi8-r\"");
#push(@message, "Content-Transfer-Encoding: 8bit");

push(@message, "Content-type: Multipart/mixed;\n");
push(@message, "\tboundary=\"$boundary\"\n");
push(@message, "\n");
push(@message, "This is a multi-part message in MIME format.\n");
push(@message, "\n");
push(@message, "--$boundary\n");

##  Print out any text message sent with the email
if ($plain_text_message){
    push(@message,"Content-type: text/plain; charset=koi8-r\n");
    push(@message,"Content-transfer-encoding: 7bit\n");
    push(@message,"\n");
    push(@message,$plain_text_message);
    push(@message, "\n");
}


if ($attachment) {
    push(@message,"--$boundary\n");
    ##  Print the header for that attachment.
    push(@message, "Content-type: application/octet-stream;\n name=\"$attachment_name\"\n");
    push(@message, "Content-Disposition: attachment;\n filename=\"$attachment_name\"\n");
    push(@message,"Content-transfer-encoding: BASE64\n");
    push(@message,"\n");

    ##  Send out the contents!!
    ## Store the new line character
    $_nl=$/;
    undef $/;
    open(FL,$attachment) || die $!;
    binmode (FL);
    $some_text=; ## Read the entire file contents into the variable

    close(FL);
    $/=$_nl; ## Restore the new line character.

    $some_text=encode_base64($some_text);
    push(@message,$some_text);
}

push(@message,"\n");
push(@message,"--$boundary--\n");

##     Indicte Start of the DATA header & send the message
$smtp->data(@message);


##     Close the connection
$smtp->quit;



sub encode_base64 ($;$){
 my $res = "";
 my $eol = $_[1];
 $eol = "\n" unless defined $eol;
 pos($_[0]) = 0;                          # ensure start at the beginning
 while ($_[0] =~ /(.{1,45})/gs) {
   $res .= substr(pack('u', $1), 1);
   chop($res);
 }
 $res =~ tr|` -_|AA-Za-z0-9+/|;               # `# help emacs
 # fix padding at the end
 my $padding = (3 - length($_[0]) % 3) % 3;
 $res =~ s/.{$padding}$/'=' x $padding/e if $padding;
 # break encoded string into lines of no more than 76 characters each
 if (length $eol) {
   $res =~ s/(.{1,76})/$1$eol/g;
 }
 $res;
}

sub usage () {
    print "Usage: mail [-f from] [-t to] [-s subject] <-b body=""> <-a attachment_file="">\n";
}

Tuesday, June 10, 2014

Opensource vs. Non-opensource

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

Tuesday, June 3, 2014

Перлюстрация почты. Заметка 1.

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

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

Разворачиваем циновки, достаем бубны и призываем на помощь уже не раз выручившую нас юникс-подобную операционную систему. На нее устанавливаем любой почтовый сервер. На подвернувшемся мне под руку Debian оказался Exim, который переводим в режим satellite. Что же, пусть он немного послужит силам, которые сложно однозначно идентифицировать.

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

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

Для работы с «улетающей» почтой используем механизм «system-wide message filtering» характерный тем, что правило срабатывает 1 раз для сообщения независимо от количества адресатов и работает оно до роутинга.

Начнем с файла /etc/exim4/conf.d/main/ 01_exim4-config_listmacrosdefs, вставив в него пару строк (на самом деле их вставить можно куда угодно, но тут мне кажется, их легче найти через пару лет):

system_filter = /etc/exim4/systemfilter.txt
system_filter_directory_transport = local_copy_outgoing


Тут мы определили, где будет прописано наше правило и транспорт для сохранения писем.

Теперь создадим файл /etc/exim4/systemfilter.txt и запишем в нем следующее:

if $sender_address_domain is and not $sender_address is
then
    save /var/mail/mailarchive/$sender_address/
elif $sender_address is
then
    finish
else
    seen finish
endif


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

Как, сохраняя свою совесть чистой, отправлять собираемую информацию руководству, в следующей серии.

PS. Не считаю зазорным постоянно напоминать сотрудникам о том, что их почта собирается и может быть прочитана сотрудниками службы безопасности или их руководством. Рекомендую делать это регулярно, даже если почта не собирается - береженого бог бережет.

Monday, May 26, 2014

PHDaysIV

В прошлый четверг выступали на конференции.

В двух словах доклад был посвящен  взлому генераторов java.util.Random и java.security.SecureRandom . Первый из них является криптографически нестойким, второй - криптографически стойким, внутри у него нормальная хеш-функция, типа SHA-1. Помимо рассказа о том, как можно атаковать генераторы, были продемонстрированы атаки на реальные приложения их использующие.

В случае Random атаковывалось внутреннее состояние генератора - по выходной последовательности оно восстанавливалось, что позволяло в последствии генерить такой же выход, что и в случае атакуемого приложения. Были предложены методы, позволяющее атаковать внутреннее состояние более эффективно, чем полным перебором. Важно отметить, что атака на выход метода .nextInt(limit) для четного limit не разработана нами и была известно ранее, однако, для нечетного limit и для limit, представляющего собой степень 2 - наше изобретение. Выходы методов .nextLong() и .nextInt() так реализованы, что они в "в лоб" перебираются мгновенно.

Для случая SecureRandom атаковывалось первоначальное состояние генератора, seed, то, чем он был инициализирован. Исследовать безопасность SHA-1 мы посчитали бесперспективным. Здесь проблема в том, что есть немало приложений в которых инициализация производится коротким seed который либо просто известен, либо эффективно перебирается - такие приложения были найдены, а их взлом продемонстрирован в демонстрациях.

Все коды, которые мы написали в рамках этого небольшого исследования доступны в GitHib - https://github.com/votadlos/JavaCG.

Презентация:



Демонстрации, доступны в Мишином канале YouTube:
http://www.youtube.com/watch?v=mdOfZMsj4hA 
http://www.youtube.com/watch?v=BwXhpjiCTyA 
http://www.youtube.com/watch?v=B3EkrmNWeJs 
http://www.youtube.com/watch?v=--ZuBUc2F2Y 

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