Статья Как правильно изучать malware-кодинг под Windows

Admin

Администратор

Как правильно изучать malware-кодинг под Windows​




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

0х0
Итак, начнем. В школе сначала учатся читать и писать, а потом уже переходят к другим дисциплинам, в случае же нашей темы - вы должны уметь пользоваться Windows , на уровне уверенного пользователя / начинающего сисадмина. Понятно, что если вы читаете эту статью, значит какие-то навыки работы с компьютером у вас есть. Но соц.сети и ютуб это не то, что нужно. Вы должны уметь пользоваться командной строкой Windows (cmd.exe) , "путешествовать" по файловой системе, иметь базовые понятия о .bat файлах, переменной %PATH% (знать что это, уметь добавить/удалить туда значения). Нужно разобраться и настроить виртуальную машину, т.к. во-первых, подобный софт может убить основную ОС, а во-вторых , малварь придется проверять на разных выпусках и версиях винды. Конкретную литературу к этому пункту не могу посоветовать, т.к. у всех разный уровень знаний.

Теория:
Практика:
  • установить виртуалку (VirtualBox или другую), поставить туда семерку / ХР.
  • В командной строке перейти в другую папку, на другой диск, создать файл, удалить файл, выполнить программу из цмд . Справку ищите на https://ab57.ru или в гугле.

0х1
Далее, нужно определится с языком программирования, т.е. на чем все это дело будет создаваться. Если вкратце, то учить надо язык Си. Если подробнее - язык программирования должен быть нативным (т.е. никаких фреймворков и прочее) и компилируемым (не скрипты). На эту тему можно много холиварить, почему так , а почему не учить петон, а вот на шарпе... Я уже говорил много раз, как первый язык нужно то, где нет ничего лишнего вида неотключаемых библиотек, фреймворков, сборщиков мусора. Именно чистый код. Изучите это - можете потом писать на чем угодно, но начинать учиться нужно именно с такого языка.
Языков много, но в принципе, выбирать можно между Си и Паскалем. Почему не Ассемблер? С него очень тяжело начинать, я знаю это по своему опыту. Изучая Ассемблер в качестве первого языка , вы будете вынуждены учить и сам Асм, и основы программирования, и WinApi (поскольку в Асма нет никакой стандартной библиотеки). Т.е. чтобы вывести строку на экран или там записать в файл, вам надо будет параллельно изучить чудесный мир Windows API, с миллионом параметров и тысячей типов данных , да еще и ксорить дворды конвертировать это в Асм-код. В то время как Си или Паскаль на этом этапе позволят "схалявить" и использовать простые функции. Почему не С++ ? Потому что в нем нет никаких преимуществ перед чистым Си в контексте нужной нам задачи, а учить ООП и новые стандарты с 0 - нереально (и бессмысленно). Настоящие плюсы - это фабрики, шаблоны, итераторы, умные указатели , буст и т.д. и т.п, а не "Си с классами" образца 94 года , как видят С++ многие. Со временем, возможно, вы захотите перейти на плюсы, но не сейчас. Есть еще freebasic и прочая экзотика, но эти языки менее популярны, и в случае чего (нет инклуда, какая-то ошибка) не у кого будет спросить. Вначале обучения это очень важно, когда есть ошибка, которая не гуглится и спросить особо не у кого. Поэтому - либо Си, либо Паскаль. С чего бы не начали, правда, надо учесть, что знание Си (на уровне чтения сорцев) все равно будет нужно , т.к. все эти MSDN и книги содержат примеры именно на этом языке. В данной заметке я тоже буду ориентироваться на Си, поэтому изучайте Си. Касаемо паскаля - если у кого есть на примете хорошая книга для начинающих (и мысли на эту тему) , пишите здесь. Я могу вспомнить только Столярова https://xss.pro/threads/28946/ , но и у него паскаль идет сугубо как подготовка к Си-кодингу.

Теория:
  • Стивен Прата "Язык программирования С. Лекции и упражнения". https://rutracker.org/forum/viewtopic.php?t=4791274 Она подойдет тем, кто начинает с полного 0, т.к. там все разжевано до мельчайших деталей.
  • Брайан Керниган, Деннис Ритчи. "Язык программирования Си" https://rutracker.org/forum/viewtopic.php?t=32310 более сложная книга (относительно первой), но это классика (авторы создали язык Си).

Практика:
  • Все упражнения из книги (закодить самому , разобраться как что и почему работает, поэкспериментировать с разными возможностями языка).
  • Установить Visual Studio, там хорошая пошаговая отладка, подсветка синтаксиса, автодополнение и т.д. Почитать справку, как там дебажить, потестить на практике (регистры, память, переменные).

0х2
Изучив базовые основы языка Си, можно двигаться дальше , а именно - приступить к изучению WinApi. Основная разработка в ОС Windows идет с помощью Win32 Api - это , так сказать, самый низкий (из документированных Майкрософтом) уровень для разработки под винду в юзермоде. Еще есть Native Api и даже прямой вызов сисколов, но пока этого всего не надо. Вам нужно усвоить базовую информацию по разработке под Windows - что такое поток, процесс, служба, как разрабатываются многопоточные приложения и т.д. Параллельно нужно совершенствовать знания языка Си, а именно - изучить базовые алгоритмы. С некоторыми из них вы должны были уже встречаться ранее. Знание алгоритмов нужно, чтобы быть именно нормальным программистом, а не "быдлокодером". Также некоторые системные структуры (да и просто чужие сорцы) могут использовать все эти хэш таблицы, двусвязные списки, и подобное. Конечно, в любом языке программирования давно существуют стандартные библиотечные средства для такого. Но - вам нужно понимать, как все это дело устроено на низком уровне, а уж потом юзать готовое. Вообще, в процессе обучения нужно делать свои "велосипеды", чем больше тем лучше.

Теория:
  • Финогенов К.Г "Win32. Основы программирования" https://rutracker.org/forum/viewtopic.php?t=908022 , самая простая и базовая книга по WinApi. К сожалению, автор ее писал лет 20 назад, когда еще все было по другому, но все же.
  • http://firststeps.ru/mfc/winapi/win/apiwind1.html - основы винапи на русском языке, и вообще полезный сайт
  • Керниган, Пайк "Практика программирования" https://rutracker.org/forum/viewtopic.php?t=3049308 отличная книга (один из авторов - создатель Си и Go), как раз на тему алгоритмов и разработки в целом.

Практика:
  • Напишите простейшие GUI приложения под винду. Никаких компонентов, чистый WinApi (окна, диалоги). Потестируйте разные примеры с книги Финогенова.
  • Доработайте свои примеры из книг по Си (раздел 0х1), добавив туда окна. К примеру, окно, форма ввода открыть такой-то файл, если ок - считать данные с него, если не ок - вывести ошибку.

0х3
Вы уже прошли основы WinApi, более-менее уверенного владеете языком Си, пришла пора полностью погрузится в программирование под Windows. Изучить различные системные механизмы, подробнее ознакомится с процессами, межпроцессным взаимодействием, созданием сервисов, устройством памяти винды, динамические библиотеки и прочая и прочая - в общем, изучить все кирпичики, из которых состоит разработка под Windows. Здесь можно учить все подряд, а можно выбирать только некоторые темы, скажем пропустить службы или там безопасность винды. Советую читать все подряд, т.к. лишних знаний не бывает.

Теория:
  • Джеффри Рихтер "Windows via C/C++" https://rutracker.org/forum/viewtopic.php?t=3075398 . Классика системного программирования под винду. Вне зависимости, что еще вы планируете изучать, эту книгу прочитать вы обязаны.
  • Дж. Харт "Системное программирование в среде Windows" https://rutracker.org/forum/viewtopic.php?t=988938 Также неплохая книга, есть задания для самостоятельной работы.
  • Рихтер, Кларк , "Программирование серверных приложений для windows 2000" https://rutracker.org/forum/viewtopic.php?t=298205 далеко не все из этой книги вам понадобится сразу, но некоторые темы (реестр, файлы) следует изучить, т.к. они дополняют первую книгу. Кстати, именно в этой книге есть IOCP (нафиг никому не нужный 20 лет, но внезапно обретший популярность из-за говнолокеров).

Практика:
  • В вышеупомянутых книгах много примеров , изучите их, попробуйте что-то изменить, выполните задания по доработке примеров или придумайте сами.
  • Напишите простейший криптолокер, который ищет файлы и шифрует их банальным ксором. Используйте разные технологии (потоки, порт, тредпул), сравните какая эффективней (как сравнивать см. в книге Харта).
  • Напишите компонент (модуль в виде DLL) для вашего криптолокера, пропишите его в реестр ; добавьте отстук на какой-то домен (используя Wininet/winsock/winhttp api, документацию см. в мсдн).

0х4
В книге Рихтера из предыдущего этапа в конце обучения вы столкнулись с понятием инжекта в процесс, перехватом апи функций и подобными темами. Пришло время изучить это все дело подробнее. Нужно учиться изучать программы без исходных кодов, дебажить их, реверсить , понимать логику чужой программы и искать ошибки в своей в боевых условиях. Студийный отладчик помогал все это время в обучении. Но для чужих программ такой халявы не будет, т.к. у вас нет исходных кодов , а только Асм листинг. Чем дебажить? Можно взять как старую OllyDBG (только 32 бита), так и более новый x64dbg, и разбираться. Сначала трейсить пошагово свои же программы, параллельно читая справочник по Ассемблеру. Книжек по последнему есть великое множество, но не все оттуда нужно в данном случае - Асм достаточно понимать, а не писать на нем (тем более под dos, как учит 80% авторов). Знания Ассемблера пригодятся и дальше, для вызова сисколов, сокрытия/перехвата вызовов винапи, разработки шеллкодов и так далее.

Теория:

Практика:
  • Реверс и дебаг сначала своих, а потом и чужих (крекми, чужая малварь) приложений.
  • Напишите простой шеллкод (пусть даже захардкодив адреса апи), выполните его. Протестируйте разные методики инжекта в процесс.

0хFF
Вот таков примерный курс, изучив который вы сможете уверенно начать разрабатывать простую малварь. Почему простую? Потому что, увы, несмотря на большой объем инфы, многие вещи все равно еще остались за кадром. К примеру, РЕ формат , секьюрити винды, технология СОМ, драйвера (не обязательно учиться писать малварь под ядро, но понимать как там что устроено, весьма желательно), криптография, сеть, NTFS , графика винды (огромная тема, все эти GDI+, win32k.sys) и т.д. и т.п. Но это все дело поправимое, было бы желание учится. Имея базу, можно со всем постепенно разобраться.

Дальнейшее чтение:
  • MSDN
  • Марк Руссинович "Внутреннее устройство Windows"
  • "от зеленого к красному" - три статьи, линк ищите сами, на васме или chm копии старого васма.
  • rsdn.org
  • Свен Шрайбер "Недокументированные возможности Windows 2000"
  • ..... тысячи сайтов, страниц, книг..

Дальнейшая практика:
  • реверс чужой малвари, написание своей. Что-то не знаете - реверсите конкурента, читайте аверские обзоры , спрашивайте на форуме.

И постоянно учитесь, ведь знание это Сила и главный капитал!

Примечания.
  1. Статья отображает сугубо мое субъективное мнение и мой личный опыт, никого ни к чему не призывает, просто советует. Конструктивная критика ("сначала лучше изучить Х, а там сделать упор на Y перечитав Z") приветствуется. Неконструктивная ("это все бред, учите петон!") будет удаляться (но никто не запрещает создать свою тему и там расписать свой опыт от и до).
  2. Ссылки на материалы, ес-но могут устареть, умереть, переехать, поэтому ищите их по названию в гугле.
 
Похожие темы
Admin Интересно Как стать «богом» в Linux, просто правильно подгадав время. Спойлер: вам понадобится Chronomaly. Новости в сети 0
Admin Интересно Как правильно шифровать диски VeraCrypt'ом Анонимность и приватность 2
ev0117434 Интересно Как правильно заказывать рекламу в телеграмме! Спам, рассылки, трафик, SEO 0
S Как правильно использовать фишинговые рассылки в рамках пентеста (СТАТЬЯ НЕ МОЯ) Полезные статьи 5
K Росскажите поподробнее о терминах и как это правильно применять. Свободное общение 3
S Как правильно чистить дедик ? Полезные статьи 1
M Как правильно пробить человека через интернет Ч1 Полезные статьи 0
Admin Как правильно троянить файлы Вирусология 3
K Как правильно пользоваться левыми дебетовыми картами Полезные статьи 0
АнАлЬнАя ЧуПаКаБрА Как правильно восстановить спамблок-почту Mail.Ru (90% успех) Раздачи и сливы 1
Admin Интересно Вашему RDP поставили «лайк». История о том, как горстка серверов прочесала Интернет и нашла все изъяны. Новости в сети 0
Admin Интересно Русские хакеры против картошки фри. Как взлом кассы самообслуживания обернулся годом условно. Новости в сети 0
Admin Интересно Тройная порция шантажа под соусом анонимности. Как одна банда притворяется сразу тремя разными группировками. Новости в сети 0
Admin Интересно Как соседей России заставляют выбирать между Европой и личным спокойствием. Новости в сети 0
Admin Интересно Позвони мне через пылесос. Как выживает рунет после блокировки мессенджеров. Новости в сети 0
Admin Интересно Ускоритель частиц размером с карандаш. Мощность — как у километрового. И это работает. Новости в сети 0
Admin Интересно Война правок и логотипов: Как Euro-Office поссорился с ONLYOFFICE из-за лицензии. Новости в сети 0
Admin Интересно Цифры врали. Не специально — просто их сложили неправильно. Вот как парадокс Симпсона ломает статистику. Новости в сети 0
Admin Интересно Цифровые активы после смерти: как управлять рисками для цифрового наследства. Новости в сети 0
Admin Интересно Тихий взлом и полная невидимость. Рассказываем, как новый вирус RoadK1ll захватывает корпоративные сети. Новости в сети 0
Admin Интересно Как заморозить воду быстрее? Сначала вскипятите её и плюньте на здравый смысл. Новости в сети 0
Admin Интересно Откройте доступ к коду из любой точки мира. Как работает новый проект rustunnel. Новости в сети 0
Admin Интересно Не просто «стенка с мониторами». Как за 6 недель создать работающий центр кибербезопасности. Новости в сети 0
Admin Интересно Хакеров много, а работать некому. Как кадровый голод обнуляет защиту мировых гигантов. Новости в сети 0
Admin Интересно Римские цифры, узелки инков и буква x в магазине: как запись чисел определила всю историю математики. Новости в сети 0
Admin Интересно 43% сотрудников опасаются, что ИИ лишит их работы. Как страх увольнения убивает эффективность бизнеса. Новости в сети 0
Admin Интересно Власти Венгрии решили завербовать сторонника оппозиции. Вышло как при коммунизме. Новости в сети 0
Admin Интересно Веб-семинар: Как проверить эффективность вашей защиты от реальных атак. Новости в сети 0
Admin Интересно Как заставить нейросеть удалить всё лишнее (и нужное тоже)? Разбираемся в «токсичных потоках». Новости в сети 0
Admin Интересно 27 граммов еды из 1 грамма бактерий. Как превратить марсианскую пыль в полноценный обед. Новости в сети 0
Admin Интересно Сложность облачных сред как главный враг кибербезопасности. Новости в сети 0
Admin Интересно Три миллиона IP-камер и роутеров по всему миру. Как спецслужбы разгромили гигантскую сеть ботнетов. Новости в сети 0
Admin Интересно Как короткий код превращает рабочую станцию в зомби. Новости в сети 0
Admin Интересно 20 часов до первого удара. Как ИИ-инструменты лишили системных администраторов сна. Новости в сети 0
Admin Интересно Форум SocioTech 2026: как объединить бизнес, информационную безопасность и персонал. Новости в сети 0
Admin Интересно GhostMail: как письмо о стажировке украло всю почту за 90 дней. Новости в сети 0
Admin Интересно Рынок шпионских программ: как посредники делают слежку анонимной и дорогой. Новости в сети 0
Admin Интересно Как быстро восстановить взломанный аккаунт: краткое руководство. Новости в сети 0
Admin Интересно Драйверы-предатели. Как легитимные программы помогают преступникам шифровать ваши данные. Новости в сети 0
Admin Интересно Практический онлайн-курс: как внедрить и настроить UserGate. Новости в сети 0
Admin Интересно Центральная предельная теорема: как случайности формируют закономерности. Новости в сети 0
Admin Интересно Как Mesh CSMA выявляет и устраняет пути атак на ключевые активы. Новости в сети 0
Admin Интересно Капча с двойным дном. Как обычное подтверждение, что вы не робот, превращается в установку шпиона. Новости в сети 0
Admin Интересно Кавычки решают всё. Как одна забытая проверка в коде подставила четверть миллиона владельцев сайтов. Новости в сети 0
Admin Интересно Спутники за миллиарды долларов боятся батарейки из супермаркета. Как военные и хулиганы «выключают» космос одной кнопкой. Новости в сети 0
Admin Интересно Anthropic запустила сервис для проверки кода, который работает как опытный разработчик. Новости в сети 0
Admin Интересно Как предотвратить утечку данных через ИИ: вебинар по аудиту современных агентских процессов. Новости в сети 0
Admin Интересно Фишинговая кампания перед выборами в Армении: как злоумышленники обошли защиту. Новости в сети 0
Admin Интересно Живые нейроны играют в «Doom»: как ученые заставили кусок плоти из пробирки расстреливать кибердемонов. Новости в сети 0
Admin Интересно Слишком сложно для Microsoft. Как три разработчика сделали сайт npm лучше, чем целая корпорация. Новости в сети 0

Название темы