суббота, 20 февраля 2016 г.

О дизайне кода

Правильно разработанный код не только легко читается, но легко масштабируется …

Это очень полезно не только при командной работе, но и когда Вы пишите проект в одиночку, как заметил автор статьи “Порядок в коде – порядок в голове”. Но увы, дизайн кода не исправишь авто-форматированием в отличии от оформления.
По этому даже код в одном стиле может стать адом при добавлении нового функционала.

Каких принципов лучше придерживаться при написании кода?

На этот вопрос в интернете можно найти много информации, к примеру материалы Joshua Bloch-a ( линк1, линк2 ).
Но, учитывая специфику данного сайта, хотелось бы выделить несколько принципов которые забывают или избегают начинающие малваршики.

  • Процедурный стиль в программировании. Я думаю не стоит объяснять какие преимущества дает ООП при написании кода.
  • Называйте методы/классы явно. Например, если у вас есть метод с именем registerUser, то он должен регистрировать пользователя и ничего больше не делать. но если вдруг он помимо регистрации еще и логинит пользователя, тогда его следует назвать loginAndRegisterUser, либо вынести этот функционал в 2 разных метода.
  • Разделяйте сервисы и данные. Почти во всех приложениях можно разделить код как минимум на 2 части, это Данные(Классы которые имеют состояние и не содержат в себе код с логикой) и Сервисы(Которые не имеют состояния, и содержат в себе код с логикой). Данное разделение полезно во первых из-за того что сервисы не имеющие состояния потоко-безопасны, во вторых это позволяет тестировать функционал сервисов независимо от всего приложения (Unit тестирование).
  • Код должен быть само документируемым, смотря на код не должно быть вопросов, почему или зачем вы это написали. Писать комментарии нужно только в случае неявных действий в коде (которых как сказано во втором пункте нужно избегать, но увы, без этого иногда не обойтись).
  • Избегайте магических чисел  (сабж) , выносите их в константы, если это не достаточно явно, в комментариях поясняйте зачем нужны эти числа.
    Когда Вы пишете код, Вы помните зачем нужно это число, но если вы посмотрите на код спустя год или это сделает другой человек, ему нужно будет потратить некоторое время, что бы понять почему там стоит именно это число.К примеру:
// Занесем полученные от сервера атрибуты
экрана в буфер консоли
WriteConsoleOutputAttribute
 (hConsoleOutput,(const WORD *)
 (&buffer.consoleBuffer.Attribute),
 8000 ,
 dwWriteCoord,
 &NumberOfcharsWriten);

Первый вопрос который хочется задать, что такое 8000 ? может быть это какой то флаг, может быть размер буффера ? Да и почему 8000, почему не 42 , или почему не 8003 ?

Разве не лучше выглядит код:

const DWORD CONSOLE_BUFFER_SIZE = 8000;

// Занесем полученные от сервера атрибуты
экрана в буфер консоли
WriteConsoleOutputAttribute
 (hConsoleOutput,(const WORD *)
 (&buffer.consoleBuffer.Attribute),
 CONSOLE_BUFFER_SIZE ,
 dwWriteCoord,
 &NumberOfcharsWriten);
  • Используйте наследование только если вы можете сказать что класс наследник является классом родителя. И не забывайте называть классы осмысленно.

Например:

//java code
public class Network extends Service{
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
                return Service.START_STICKY;
        }
        
        ...
}

Здесь было бы верно назвать класс NetworkService.

  • Используйте паттерны, но умеренно, достаточно часто начинающие девелоперы выучив новый паттерн мыслят не в стиле: “О, хороший случай что бы применить такой то паттерн” , а в стиле: “Я знаю крутой паттерн, где бы мне его применить” и во втором случае есть вероятность нарваться на design hell.
    Про другую крайность, а именно  – игнорирования дизайна кода можно почитать в этой статье.

P.S.
Если вас понравилась моя статья, Я напишу продолжение уже на примере малваки,  мы рассмотрим  весь цикл написания проекта, от юзкейсов, до готового приложения, затронув unit-тестирование и системы контроля версий.

С вами был C@t  и до скорых встреч!

Запись О дизайне кода впервые появилась VxLab.



from VxLab http://ift.tt/24i32AJ
via IFTTT

Исходный код банковского трояна для Android утек в сеть

Команда IBM X-Force предупреждает: в ближайшее время банковской малвари для Android должно стать больше. В открытый доступ попали исходные коды трояна GM Bot, на базе которого были созданы такие небезызвестные вредоносы, как SlemBunk, Bankosy и Mazar BOT.

from «Хакер» http://ift.tt/1L0Of75
via IFTTT

Продукты Comodo устанавливают на ПК пользователя опасную утилиту удаленной поддержки

Эксперт Google Project Zero Тевис Орманди (Tavis Ormandy) известен тем, что любит находить баги в продуктах разработчиков антивирусных решений. Ранее Орманди уже прошелся по программам компаний Avast, AVG, Malwarebytes, Trend Micro и FireEye. Также Орманди совсем недавно критиковал компанию Comodo за ее «защищенный» браузер. Новое разоблачение исследователя снова касается продуктов Comodo, теперь эксперт обнаружил, что компания устанавливает на компьютеры пользователей VNC-сервер для осуществления удаленной технической поддержки.

from «Хакер» http://ift.tt/1KxChlB
via IFTTT

Уязвимость JSF**k, которую eBay отказался исправить, уже эксплуатируют хакеры

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

from «Хакер» http://ift.tt/21fIdmY
via IFTTT

Самый безопасный IM. Рассматриваем клиенты Tox для Linux

Для подписчиков
Tox — новый протокол (разработка активно ведется с лета 2013 года) для обмена текстовыми сообщениями, голосовой и видеосвязи, созданный как альтернатива Skype и другим VoIP-сервисам. Как и Skype, Tox предлагает голосовую и видеосвязь, конференции с несколькими участниками, сетевые статусы, эмотиконы, обмен текстовыми сообщениями и передачу файлов. И никакой рекламы.

from «Хакер» http://ift.tt/1oRnW9B
via IFTTT

Вымогатель Locky использует для распространения вредоносные макросы

Эксперты компаний Palo Alto Networks и Sophos одновременно сообщили об обнаружении нового шифровальщика Locky, атакующего пользователей компьютеров, работающих под управлением Windows. Тогда как по методам работы новый шифровальщик скорее напоминает CryptoWall, для его распространения используются техники позаимствованные у банковского трояна Dridex.

from «Хакер» http://ift.tt/1KxnaZf
via IFTTT

пятница, 19 февраля 2016 г.

Исследователь продемонстрировал удаленный взлом сигнализации SimpliSafe

В январе 2016 года мы рассказывали об умном видеодомофоне, который можно взломать при помощь обычной отвертки. Исследователь компании IOActiv Эндрю Зоненберг (Andrew Zonenberg) выяснил, что некоторых охранные системы, призванные защитить людей и их имущество, ушли совсем недалеко от того домофона. Эксперт сумел взломать сигнализацию SimpliSafe с расстояния 30 метров, полностью отключил систему безопасности и теперь сообщает, что исправить уязвимость и сделать SimpliSafe безопасной, невозможно.

from «Хакер» http://ift.tt/1L0uEny
via IFTTT

Видеорегистраторы для хранения записей с камер наблюдения имеют встроенный root-пароль

Эксперты компании Risk Based Security обнаружили в устройствах китайской фирмы RaySharp критический баг. Данные видеорегистраторы (DVR) пользуются немалой популярностью, к примеру, производитель сообщает, что ежемесячно отгружает со складов 60000 девайсов. Тем неприятнее, что все они оснащаются жестко закодированным логином «root» и паролем «519070» или не имеют пароля вообще.

from «Хакер» http://ift.tt/1PYZ0nc
via IFTTT

Ассемблер, прощай!

Дружок, если ты соблюдаешь верность ассемблеру, а не пишешь на си – эта статья для тебя.

Почему мы пишем только на асме?

Когда-то давно это было вполне допустимо и считалось признаком мастерства. Во времена 32-битных систем это было вполне оправданно, но с приходом 64-битных ассемблерщикам пришлось не сладко.

Разумеется, основные опкоды просто расширили DWORD до QWORD и стали занимать места на 4 байта больше. В 64-битном мире больше не нужны релоки, все относительные адреса помещаются в 4 байта!

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

  1. Легкая компиляция как в 32 так и 64 битных файлов. Зачастую достаточно просто переключить режим сборки и если код написан правильно, он будет одинаково хорошо работать и там и там. Единственное ограничение – ассемблерные вставки, для 64 битных сборок их надо делать в отдельном файле.
  2. Больше хидеров. Каждый кто писал на асме знает – перегонять хидеры из msdn – неизбежное зло. На си они поставляются вместе с sdk или даже visual studio.
  3. Больше исходников. В силу того, что написав приложение используя только стандартную библиотеку си – оно будет кросплатформенно, исходников на си огромное множество. Больше не придется выдирать бинарные куски или переписывать алгоритмы с других языков.
  4. Классы, у Си с плюсами есть эта классная фишка. Они могут казаться чем-то подозрительным, но когда вы посмотрите как они выглядят в ассемблированном виде вы успокоитесь. Классы абсолютно не избыточны и не тормозят работу программы, но ускоряют разработку и облегчают понимание кода.
  5. Оптимизация. Коронная фишка ассемблера. Времена ms-dos давно прошли, никто не заметит лишнюю пару сотен процессорных тактов, да и ключи оптимизации компилятора позволят сильно срезать углы! На хабре обсуждалось какие ключи дают лучшую производительность, но скажу по секрету, что лучшую производительность даёт лучший алгоритм.
  6. Дебаг. Снова ставить int3 и ловить исключение в Olly? Нет, отладка в VisualStudio позволяет идти прямо по сишному коду, заглядывая в значение переменных, раскрывая вложенные структуры и даже подсматривая ассемблерный код!

Для меня решающим фактором для перехода на Си и плюсы в частности послужил класс Cmem, который избавил меня от головной боли по поводу утечки памяти. Деструктор (функция вызываемая при выходе из области видимости экземпляра класса, по сути перед ret в функции) – освобождал мою память неявно и автоматически, чем полностью покорил моё сердце…

P/S Если вы тоже прошли долгий путь от “Пишу всё на ассемблере” до “Пересел на си”, расскажите о нём в комментариях!

Запись Ассемблер, прощай! впервые появилась VxLab.



from VxLab http://ift.tt/1SXluLI
via IFTTT

Что происходит с личными данными после взлома: эксперимент компании Bitglass

Исследователи компании Bitglass провели интересный эксперимент, озаглавленный «Где ваши данные?» (Where’s Your Data?). Специалисты создали сайт вымышленного банка, снабдили его несуществующих служащих фейковыми личностями, подключили аккаунт Google Drive и добавили ко всему этому информацию о настоящих банковских картах. Затем аналитики Bitglass сами слили эти сфабрикованные данные в даркнет, под видом результата фишинговой атаки, и принялись ждать.

from «Хакер» http://ift.tt/1KuhnDO
via IFTTT

Голливудская клиника заплатила выкуп $17000, чтобы избавиться от шифровальщика

Ранее на этой неделе сообщалось, что работа Голливудского пресвитерианского медицинского центра (Hollywood Presbyterian Medical Center) оказалась в буквальном смысле парализована из-за заражения вымогательским ПО. Больница была вынуждена передать некоторых пациентов другим клиникам и отказаться от использования техники в пользу ручки и бумаги. По информации СМИ, хакеры требовали 9000 биткоинов выкупа, что составляет порядка 3,6 млн долларов США. Теперь представители клиники рассказали, что случилось на самом деле. Нет, СМИ практически не ошиблись, но сильно преувеличили сумму выкупа.

from «Хакер» http://ift.tt/1Ku8BFG
via IFTTT

PoC 2015: фингерпринтинг смартфонов. Колонка Дениса Макрушина

Для подписчиков
Power of Community — южнокорейская конференция по практической информационной безопасности, где вот уже с 2006 года собирается преимущественно корейская и китайская аудитория. Несмотря на кажущуюся «местечковость», программа мероприятия пестрит докладами спикеров из разных стран, чьи имена часто встречаются на более крупных конференциях.

from «Хакер» http://ift.tt/1XBlFew
via IFTTT

Twitter, Facebook и McAffee поддержали Apple в споре с ФБР

Открытое письмо главы Apple Тима Кука, а также прямой отказ компании исполнять предписание суда и помогать ФБР взломать iPhone террориста, спровоцировало в сети настоящий информационный шторм. Позицию Apple практически сразу поддержал глава Google Сундар Пичаи, а теперь к нему присоединились также представители Facebook и Twitter. Основатель компании McAfee и кандидат на пост президента США Джон Макафи вообще пообещал властям взломать этот злосчастный iPhone 5c бесплатно, не создавая никаких бэкдоров, а в противном случае он грозится съесть свой ботинок.

from «Хакер» http://ift.tt/24dQgDf
via IFTTT

Apple исправила «ошибку 53» и извинилась перед пользователями

Парни из iFixit были правы – если привлечь к «ошибке 53» достаточно внимания и спровоцировать скандал, Apple будет вынуждена что-то предпринять. Компания исправила баг, в результате которого iPhone отказывается работать после замены в неофициальном сервисе сканера отпечатков пальцев Touch ID (он встроен в кнопку «Домой») или кабеля, которым тот подключается к плате.

from «Хакер» http://ift.tt/1WvjwQb
via IFTTT

четверг, 18 февраля 2016 г.

Новый тренд в области DDoS-атак: хакеры стали использовать протокол DNSSEC

Специалисты компании Akamai зафиксировали новую тенденцию в области усиленных DDoS-атак: теперь хакеры все чаще используют для этих целей протокол DNSSEC.

from «Хакер» http://ift.tt/21cHXp2
via IFTTT

Специалисты придумали еще один способ взлома отключенных от сети компьютеров

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

from «Хакер» http://ift.tt/1WvbGWK
via IFTTT

Вирусы под андроид. №2 (Разработка админки)

Начинаем второй мини урок или куда прикрутить наше чудо, которое мы написали. Я не буду описывать как написать админку с нуля или как правильно писать сайты. Тут будет чисто теория и методы. Итак приступим. Первое, что нам потребуется это гейт.

Гейт – это скрипт который будет принимать, отдавать команды. К примеру админка у нас стоит на http://site.ru/. Создаем скрипт gate.php. И кладём его в корень. Получаем наш гейт http://site.ru/gate.php. Важно: нельзя использовать слова gate и слова-маячки. Трафик может снифаться.

Этот скрипт будет принимать и отдавать команды. Самый верный способ – это отправка данных методом post и чтение вывода.

Получаем простую цепочку:

1. Определяем гейт.
2. Шлем отстук.
3. Забираем задачи, что гейт нам даст в ответ. (Лучше всего задачи забирать по одной, так как нам важно время обработки команд и память которыю мы используем на телефоне. Ведь там не как на компе, гигабайты ее. А java она все таки местами прожорливая.)
4. Шаг не всегда отрабатывает, так как не всегда нам нужно слать отчет о выполнении команд. Но если все таки надо. То мы это делаем 2м пунктом, но с определенным флагом.

Почему post? Чтобы в логах не было ничего кроме имени гейта.

А ,что слать то?

В отстук входят все основные параметры такие как imei, версия os, sdk, различные параметры пользователя. Кстати если вы не знаете как генерировать bot id, то imei будет в самый раз, чтобы различать всех ботов. Так как это уникальный параметр телефона. Все что вы считаете нужным, отсылаете, а ответ обрабатываете.

Список параметров рекомендуемый для отстука:
1. imei (id бота)
2. оператор
3. версия os
4. версия sdk(для разграничения функционала, так как до 4.4 и после разные методы работы используются)
5. модель телефона
6. серийный номер
7. есть ли рут (использовать расширенный функционал и консоль устройства)
8. версия билда (по этому параметру можно обновлять старые версии)
9. Номер телефона
10. Другии параметры важные вам

Формат запросов, самый удобный на мой взгляд это json. Но мы живем в 21м веке и этого мало. Это все надо шифровать еще.  Почему json? Его очень легко обрабатывать и на стороне сервера и на стороне клиента.Далее мы накладываем алгоритм шифрования. Самый простой это будет RC4, хотя их много, как говорится, на вкус и цвет товарища нет. Но тут мы столкнемся с одной проблемой, у нас могут появитсья всякого рода спец символы, с которыми возникнут сложности при передаче и декодировании. Выходом является обёртка из base64.

Алгоритм получается следующий:
1. Составляем json
2. Шифруем его RC4 или любым другим алгоритмом.
3. Оформляем в base64
4. Отправляем
5. Читаем вывод гейта.
6. Делаем все в обратном порядке. Снимаем base64 , расшифровываем, разбираем json. Если надо отрабатываем определенные действия.

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

Если что вспомню, допишу в комментариях. Получилось очень мало, так как написание админок – тема широко освещаемая. Просто механическая работа PHP программиста. Принял , обработал, отдал :) Следующий материал будет про сбор информации с телефона, где мы плотно рассмотрим, как и что можно с него грабить.

Запись Вирусы под андроид. №2 (Разработка админки) впервые появилась VxLab.



from VxLab http://ift.tt/1orGHzS
via IFTTT

Typedef generator

Я подумал, что будет неплохо обзавестись пачкой php-утилит. Под катом ссылка на код и все пояснения.

Довольно часто нам приходится (в целях сокрытия импорта) получать адреса функций динамически:

typedef BOOL (WINAPI *IsWow64Process2)(HANDLE hProcess,PBOOL  Wow64Process);
IsWow64Process2 proc = (IsWow64Process2) GetProcAddress(GetModuleHandleA("Kernel32"),"IsWow64Process");

Каждый раз переписывать прототип

BOOL WINAPI IsWow64Process(
  _In_  HANDLE hProcess,
  _Out_ PBOOL  Wow64Process
);

в typedef

typedef BOOL (WINAPI *IsWow64Process2)(HANDLE hProcess,PBOOL  Wow64Process);

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

Исходник скрипта лежит здесь

Постоянная ссылка на генератор

Скрипт as is, можете допиливать под ваши нужды.

Попробуйте прогнать через него msdn определения!

Запись Typedef generator впервые появилась VxLab.



from VxLab http://ift.tt/1QM5e9G
via IFTTT

26 000 сайтов на базе WordPress используются для Layer 7 DDoS-атак

Эксперты компании Sucuri сообщили, что сайты под управлением WordPress вновь подвергаются массовым кибератакам. На этот раз против ресурсов на базе популярной CMS проводятся Layer 7 DDoS-атаки, которые к тому же эксплуатируют функцию pingback и генерируются ботнетом из... WordPress-сайтов.

from «Хакер» http://ift.tt/1QLhgAk
via IFTTT

Нежелательная реклама используется для распространения рекламы вредоносной

Когда браузерный аддон Wajam только начинал работу, он был многообещающим стартапом, но потом что-то пошло не так. Аддон был замечен в распространении нежелательной рекламы: он внедряет объявления в поиск Google, меняет стартовую страницу браузера и встраивает рекламные баннеры прямо в страницы посещаемых сайтов. Теперь аддон используется еще и для вредоносных рекламных кампаний и распространения эксплоит кита Angler.

from «Хакер» http://ift.tt/1Wtpf9e
via IFTTT