PDA

View Full Version : گفتگو: منبع برای اینجکت به صورت واید



fahimeh1512
دوشنبه 15 مهر 1392, 15:53 عصر
باسلام
درمورد اینجکت دی ال ال یا فایل به صورت واید دنبال اطلاعات زیاد میگردم جسارتا منظورم از واید اینه که به فرایند بتونه تو همه پروسه های موجود در سیستم اینجکت کنه و حتی اگه پروسه جدیدی هم باز شد بتونه تو اون هم اینجکت کنه
باهمین کلمات جستجو میکنم چیزی که میخوام رو پیدانمیکنم خواهشا منبعی، مقاله ای، سورسی که بشه تکنیک های اصلی رو ازش پیدا کرد رو اگه سراغ دارین بفرمایین
متشکر

Felony
دوشنبه 15 مهر 1392, 19:03 عصر
rootkit arsenal (https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CCgQFjAA&url=http%3A%2F%2Fwww.amazon.com%2FThe-Rootkit-Arsenal-Evasion-Corners%2Fdp%2F144962636X&ei=8d1SUuuwKcHQhAfhhIGwDw&usg=AFQjCNGFbEj4DxKBVcHoULPns9ZQ-s-qHw&bvm=bv.53537100,d.Yms)

fahimeh1512
پنج شنبه 18 مهر 1392, 08:32 صبح
من این کتابو داشتم بررسیش کردم بازم اطلاعات بیشتری میخوام
مثلا میخوام ببینم چطوری یه برنامه به همه پروسه های سیستم نفوذ میکنه و منتظر میمونه برنامه های جدیدی رو که ران میشن رو هم اینجکت میکنه
کسی سورس کدی داره که این کارو انجام داده باشه؟؟؟
تو کد پروجکت میگردم نمیتونم چنین چیزی رو پیدا کنم
خواهشا اگه کسی سورس کد یا مثالی داره که تکنیکشو نشون میده کمکم کنه

fahimeh1512
پنج شنبه 18 مهر 1392, 22:35 عصر
112 نفر این تاپیک و دیدن چرا هیچ کس جواب نمیده پس؟؟:افسرده:

one hacker alone
جمعه 19 مهر 1392, 01:24 صبح
با سلام
قرار نبود تو این موضوع بحث کنم چون یکم موضوع گنگ بود اما خب بریم جلو ببینیم چی میشه
من اینجوری حدس میزنم که شما میخواین یه برنامه بنویسید که حالا کاری نداریم کارش چیه اما میخواین بچسبه به برنامه های دیگه حالا برنامه های دیگه دو دسته هست یکی اونایی که در حال اجرا هستن به قول شما پروسه ها و یکی فایل های اجرایی که در حال اجرا نیستن
خب اگه فرض رو بر این بزاریم که شما فقط پروسه ها رو میخواین ما روال زیر رو داریم
الف - لیست کردن پروسه ها به همراه PID اونها
ب- بدست اوردن آدرس حافظه ی هر پروسه ی در حال اجرا
ج- رایت کردن کد تو اون قسمت حافظه که با توابعی مانند WritepPocessMemory امکان پذیر هست
این کلیات کار هست حالا هر کدوم از مراحل توابع خودشون رو دارن
شما روند کار رو برید جلو هرجا مشکل داشتین بگین

fjm11100
جمعه 19 مهر 1392, 01:58 صبح
همه یا یکی فرقی نداره شما یکی را هم اینجکت کنی میتونی همه را اینجکت کنی. کافیه PID پروسس های در حال اجرا را بدست بیاری
اینو (http://stackoverflow.com/questions/3477097/get-full-running-process-list-visual-c)ببین
برای اینجکت کردن هم کافیه توی گوگل یه سرچ کوچولو بزنی.

fahimeh1512
جمعه 19 مهر 1392, 08:40 صبح
خب من بیشتر مشکلم اینه که دقیقا از چه توابعی میشه استفاده کرد تا وقتی فرایند جدیدی ایجاد میشه به ما خبر بده؟
و سوال دومم اینه که وقتی ما یه دی ال ال رو اینجکت میکنیم باتوجه به محتوای اون دی ال ال تو ظاهر کار پروسه اینجکت شده نباید تغییری ایجاد شه؟ مثلا دی ال ال من یه سری پیغام ها رو تو خروجی چاپ میکنه وقتی به پروسه مورد نظرم اینجکت شد نباید اون پیغام ها رو چاپ کنه؟ یا فقط پیغام برنامه اصلیم که میگه دی ال ال با موفقیت اینجکت شد کفایت میکنه؟

fjm11100
جمعه 19 مهر 1392, 11:09 صبح
نه دیگه باید تغییری در ظاهر برنامه ایجاد نشه و کارش را بکنه و ضمن این کار کارای اضافه را هم اینجکت کنه. وقتی برای یک پروسس خاص کار میکنی چون احتمالا میدونی برای کدوم تابع اون DLL داری اینجکت میکنی کار راحت تر میشه.
برای تشخیص چروسس جدید هم فکر کنم هوک کردن CreateProcessInternalW کارت را راه بیاندازه. ظاهرا با کوئری گرفتن WMI هم میشه اما خیلی اطلاع ندارم.
این (http://www.codeproject.com/Articles/11985/Hooking-the-native-API-and-controlling-process-cre) و این (http://www.codeproject.com/Questions/571428/WMIplusProcessplusCreationplusEventsplus-plusRacep) و این (http://www.codeproject.com/Articles/12138/Process-Information-and-Notifications-using-WMI) را هم ببین

fahimeh1512
دوشنبه 22 مهر 1392, 09:52 صبح
با سلام مجدد
من کاری ک دوستان فرموده بودن رو دارم انجام میدم یعنی آیدی پروسه ها رو به دست میارم تو همه شون رایت میکنم و دی ال الم رو به اون حافظه ارسال میکنم
میخوام ببینم اگه بخوام همه پروسه ها رو با یه دی ال ال معمولی اینجکت کنم حتی اونایی ک سیستمی هستن اون وقت مشکلی برای سیستمی ها پیش نمیاد؟ تو کارشون اختلال ایجاد نمیکنه؟

fjm11100
دوشنبه 22 مهر 1392, 10:38 صبح
سیستمی ها به این راحتی نیست چون اجازه اینکه یک پروسس حفاظت نشده بخواد توی یک پروسس حفاظت شده اینجکت کنه را نمیده. اینو (http://securityxploded.com/ntcreatethreadex.php)ببین و این (http://help.madshi.net/DllInjecting.htm)

fahimeh1512
چهارشنبه 01 آبان 1392, 17:44 عصر
باسلام
باتوجه به توضیحاتی که داده بودید ی کد پیدا کردم که ایدی پروسه ها رو نمایش میده بعد تو یه وکتور لیست این ایدی ها رو دخیره میکنه
من تو همین حلقه ک داره ایدی پروسه رو چاپ میکنه توابع اینجکتم رو گذاشتم
یه دی ال ال هم بهش اتچ کردم حالا کدم اجرا میشه و برای بعضی پروسه ها پیام INJECTED رو چاپ میکنه ولی مشکل اینه ک قبل از اینکه پنجره کنسولم بازشه و اونا رو لیست کنه یه بار محتوای دی ال الم ک داره یه مسیج باکس رو نمایش میده ظاهر میشه و باید دکمه ok یا cancel رو بزنم تا اونا رو نشون بده تازه یه ارور با چنین محتوایی هم میاد ک برنامه م کرش میکنه
Unhandled exception at 0x00170003 in process notify.exe: 0xC0000005: Access violation writing location 0x00000000
به نظرتون مشکل چیه؟
for (PIDLISTITER it1 = vPidListAdded.begin() ; it1 != itAdded ; it1++)
{
BOOL bRet = OnNotify(*it1, TRUE);
if (!bRet)
{
return ERROR_CANCELLED;
}

HANDLE process_handle=OpenProcess(PROCESS_ALL_ACCESS,FALS E,*it1);
if (!process_handle) {
_tprintf(TEXT("\nno handle"));
continue;
}

LPVOID alloc_address=VirtualAllocEx(process_handle,NULL,1 024,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE) ;
if (!alloc_address)
{
_tprintf(TEXT("\nallocate error"));
continue;
}

SIZE_T number_written;
if (!WriteProcessMemory(process_handle,alloc_address, dll_handle,1024,&number_written))
{
_tprintf(TEXT("\nwrite error"));
continue;
}

if (!CreateRemoteThread(process_handle,NULL,0,(LPTHRE AD_START_ROUTINE)alloc_address,NULL,0,NULL))
{
_tprintf(TEXT("\ncreate thread error"));
continue;
}

_tprintf(TEXT("\nINJECTED!!!"));


DWORD nRet = WaitForSingleObject(
m_hQuit,
0);
if (WAIT_TIMEOUT != nRet)
{
return nRet;
}
}


اینم محتوای دی ال الم
// dllmain.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"
#include <stdio.h>

void Print(void);

BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
Print();
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}


//extern "C" _declspec(dllexport) void Print();
void Print() {
MessageBoxA(NULL,"the message box","title",MB_OKCANCEL);
}

ضمنا برنامه هایی ک توشون اینجکت میشه هم کرش میکنن مثلا گوگل کروم، vmware و ...
به نظرتون منطقیه با نفوذ دادن یه دی ال ال معمولی برنامه ها همه کرش کنن و دوباره شروع ب کار کنن؟