Начинаем становится сискодером [цикл для новичков]

Дата публикации 2 авг 2020 | Редактировалось 18 ноя 2022
Cogitations poenam nemo patitur (лат.)
Никто не несет наказания за мысли
Да будет использован синтаксис
ассемблера и чистого Си!
(c) MD5: d0558134ba9db6d134e639d0e1ebb008
Начинаем становится сискодером
Или по простому - системным программистом
Приложение 1 к
"VX начала "
(c) MD5: d0558134ba9db6d134e639d0e1ebb008
часть 1
Итак мы уже считаем себя сискодером, уяснили что между ядром и режимом пользователя Рассматривать нативные функции можно здесь – отличие от Win API огромно, но несет для нас , т.е. потенциальных вирмейкеров серьезный потенциал.
Далее, все что тут будет рассматриваться имеет лишь чисто познавательно – экспериментальный характер, предназначенный для запуска лично у себя на виртуальных машинах и т.д. не несет потенциально вредоносной нагрузки в априори. Все применения последующих машинных команд снимают с автора данного текста всякие основания для его преследования, согласно международного законодательства и конвенциями о свободе мысли и слова ООН.
Что ж, поехали.
Все дефайны и хидеры вы получите подключив к своим проектам в Visual Studio. Архив прилагается навсегда и будет , …..когда откроется тематический раздел или погуглите. Считайте домашним заданием для начинающих малварекидесов)

Ну, так например начнем пищать с системного динамика:
Код (C):
  1. BOOL WINAPI NtBeep (DWORD dwFreq, DWORD dwDuration)
  2. {
  3.   HANDLE hBeep; //Хендл устройства ядра
  4.   UNICODE_STRING BeepDevice;
  5.   OBJECT_ATTRIBUTES ObjectAttributes;
  6.   IO_STATUS_BLOCK IoStatusBlock;
  7.   if ((dwFreq >= 0x25 && dwFreq <= 0x7FFF) ||(dwFreq == 0x0 && dwDuration == 0x0))
  8.   { // Причем, это просто внутренняя структура для 2-х функций :
  9. /* https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-rtlinitunicodestring
  10. положено в нативе, кроме загрузчика, все только UNICODE:
  11.  
  12. InitializeObjectAttributes(&ObjectAttributes,&BeepDevice,0,NULL,NULL);
  13.  // надо юзать здесь, но я употребил тут заполнение структур для запоминания количества байт, что бы считали сами впредь *//
  14.   BeepDevice.Buffer=L"\\Device\\Beep"; // Открываем драйвер вашего динамика бипера на материнской плате. Если есть.
  15.   BeepDevice.Length=24; //жестко задал, чтоб не мучатся иниками
  16.   BeepDevice.MaximumLength=26;
  17.   InitializeObjectAttributes(&ObjectAttributes,&BeepDevice,0,NULL,NULL);
  18.   if (NT_SUCCESS(NtCreateFile(&hBeep,FILE_READ_DATA |
  19.   FILE_WRITE_DATA,&ObjectAttributes,&IoStatusBlock,NULL,0,FILE_SHARE_READ | FILE_SHARE_WRITE,FILE_OPEN_IF,0,NULL,0)))
  20.   {
  21.   struct
  22.   {
  23.   ULONG Frequency;
  24.   ULONG Duration;
  25.   }  BEEP_SET_PARAMETERS={{dwFreq},{dwDuration}};
  26.   if (NT_SUCCESS(NtDeviceIoControlFile(hBeep,NULL,NULL,NULL,&IoStatusBlock,0x10000,&BEEP_SET_PARAMETERS,sizeof(BEEP_SET_PARAMETERS),NULL,0)))
  27.   {
  28.   if ((dwFreq != 0x0 || dwDuration != 0x0) && dwDuration != (DWORD)-1) NtSleepEx(dwDuration,TRUE);
  29.   NtClose(hBeep);
  30.   return TRUE;
  31.   } else return FALSE;
  32.   }
  33.   }
  34.   return FALSE;
  35. }
Если есть бипер – пикалка при загрузке на материнке, то нативная функция NtDeviceIoControlFile самая из всех в системе уязов- херовое обеспечение на уровне железа. обеспечивает прямой доступ к вашей памяти и управляет ей, девайс только назван \\Device\\Beep, На самом низком уровне ядра – это файл.
Чем отличается символическая ссылка от хардварной – это не ко мне, мы долго спорили в 2007 с FourF и пришли к выводу, что хардлинки просто спуфятся ядром, где не важно, видимо в шарах.

В общем: Драйвер стоит у всех, но динамик не у всех физически на материнке, поэтому канал отладки SMB (полный контроль системы на основе доступа к РДП) связанный со структур Share memory, а проще все в систем находящейся всего лишь под эмулятором WoW64 образует файловую проекцию на Share memory с установкой временного обхода AV, т.н. FikeMapping, который является на сегодня теоретическим сплоитом.

Сноска: Вообще – вся Windows исторически писалась разными людьми и причем не согласованно и в большом количестве кода. Сначала придуман был Биллом Гейтсом объект Файл, потом его начали на уровне ядра все переписывать, получилась каша и неразбериха, 4 команды индусов придумали RPC, 8 команд их придумали т.н. пайпы (именованные каналы), 2 команды придумали вывод в консоль, и т.д. я про порты здесь не говорю.

Я на данный момент могу старым софтом Sokol практически по любой целевой машине ударить ARP+RPC+SMB (дебилы применяют сейчас для DDOS -атак),
Поверьте устоит лишь та машина, где хеши/пароли меняются в период захвата прав Админа.

(C)(2020) by MD5: d0558134ba9db6d134e639d0e1ebb008
Telegram: @DartSidys
Jabber: CryptorX@404.city


PS: Времени реакции сети на провокацию SMB. –вижу, но ARP+RPC+SMB, но принесет профит только SMB.

12 2.711
RETN

RETN
Member

Регистрация:
4 апр 2020
Публикаций:
4

Комментарии


      1. RETN 5 авг 2020
        Это как раз пиар))) Спс Братцы, что откликнулись на это гуано))))
        Я рад ВАС всех видеть, посмотрел реакшн, скажу сразу - старая Гвардия на месте)))
        Как обычно на васме все в штыки, как обычно все тут, обнимаю по братски. Статьи это реально Rel буйня. Надо Пруфы, мож выложить?
        жаль что форум сразу хлопнуТЬI. Так что PoC не ожидайте.
        Если кто уважал меня, я не поберушка, но без лавэ, мой кош BTC: 12ucYJY4ZmXcHscgaymEnZAodMWRzwi1YQ
        "Если с миру по нитке друг другу - носки свяжем(c) RET"
      2. TermoSINteZ 5 авг 2020
        Вот людям делать нечего - пишут такие вот "статьи" )
        Смахивает на рекламу.
        Мде...
        RETN нравится это.
      3. Rel 3 авг 2020
        Весьма забавно выходит. RETN поливает гуано мою статью и пишет это. Загадка бытия.
      4. HoShiMin 3 авг 2020
        RETN, зачем учить вредителей? Им место в тюрьме.

        И, кажется, пару часов назад ты навсегда ушёл с форума. Или, оправдывая свой ник, всегда возвращаешься?
      5. fontbyself 2 авг 2020
        Говно на палке , а не статья.
        Rel нравится это.
      6. RETN 2 авг 2020
        Разгадал)))
        Интересно как?
        Вычислительные мощности ФСБ?
        Тогда заметь тут вредоносного кода по 273 нет)))
        В любом случае тебе плюсик поставил. Имхо малварью сам не занимаюсь. Чисто тестингом и пентестом.
      7. HoShiMin 2 авг 2020
        RETN, так с кем бодаюсь-то? Я задал вполне конкретные вопросы, ты ни на один не ответил. О какой малвари может идти речь, если даже к копеечному коду в десять строчек столько вопросов? Ты бы хоть документацию почитал и разобрался, что у тебя в коде происходит. Малварщики диванные, блин. Сами ничего не знают, а всё туда же, в блэкхэт.

        P.S.: "Sysenter".
        RETN нравится это.
      8. RETN 2 авг 2020
        ADD: не сори тут, не шпаришь - не лезь
      9. RETN 2 авг 2020
        ой, да для малвари, прочитай с кем бодаешся MD хеш расшифруй сначало, я тут зарегился имхо не был давно по известным причинам.
        Что , кодес не пашет, не оптимайз?
        Че те надо?
      10. HoShiMin 2 авг 2020
        RETN, что плохого в дополнительном импорте? То, что у бинарника будут зависимости от NtDeviceIoControlFile, NtCreateFile, NtSleepEx, NtClose и ещё от сотни других - это ничего, а RtlInitUnicodeString - уже плохо?
        Как новичку предполагается в этом разбираться, если ни одно волшебное значение не разобрано? Не объяснено, что такое IOCTL, не объяснены волшебные параметры.
        Для чего здесь NativeAPI, если то же самое делается через CreateFile -> DeviceIoControl -> CloseHandle?

        Что новичок должен понять из этой строчки?
        Какие атрибуты, для чего, зачем?

        А что такое IO_STATUS_BLOCK? Почему статус проверяется у NtDeviceIoControlFile, но не проверяется статус самой операции в IO_STATUS_BLOCK'e?

        Я уже не говорю, что "становитЬся" в заголовке надо писать с мягким знаком.
      11. RETN 2 авг 2020
        }{орошая критика, код взять реверсом ядра, RtlInitUnicodeString - лишний импорт, когда и так все понятно.
        а про SMB - как вы заметили - это цикл, статеек для начинающих предполагается.
      12. HoShiMin 2 авг 2020
        Какой-то набор слов...
        Почему не RtlInitUnicodeString? Зачем считать байты руками, если есть готовая функция?

        Откуда берётся это ограничение?

        Откуда взялся этот IOCTL? Из чего он складывается?

        Обеспечение чего? На каком уровне железа?

        Что значит "прямой доступ к памяти"?

        А дальше просто рандомный поток сознания про какие-то SMB, AV, Share memory...