HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 30.04.2009, 20:39
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

2 desTiny А ты незабывай что есть скрытые процессы, а есть зомби.
Зомби в смысле - завершенные процессы, но еще неубитые виндой хз по каким причинам. Отличить зомби от скрытого процесса можно через запрос списка модулей процесса(EnumProcessModules) Если список не может быть получен, значит это зомби, в противном случае - скрытый процесс.
Это связано скоре всего с тем, что данные о модулях хранятся в PEB, а т.к. юзермодная часть уже уничтожена (и PEB отсутствует) то запрос проваливается.

Последний раз редактировалось slesh; 30.04.2009 в 20:45..
 
Ответить с цитированием

  #12  
Старый 30.04.2009, 20:44
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию

да я и не забываю... просто я к тому, что совысем тупой перебор не поможет. но среди этих процессов есть и вполне легальные)
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
 
Ответить с цитированием

  #13  
Старый 30.04.2009, 21:05
Hellsp@wn
Постоянный
Регистрация: 29.04.2007
Сообщений: 496
Провел на форуме:
2715445

Репутация: 588
По умолчанию

у рема в phunter всё это было реализовано
 
Ответить с цитированием

  #14  
Старый 30.04.2009, 22:33
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию

а теперь - в том коде есть несколько (много) багов
вот (вроде) правильный (+ добавил получение SeDebugPrivilege):
Код:
#define MPID 0xFFFF+1
#define SHOW_ALL
#define SEDEBUG

#if defined(WIN32) && !defined(_WIN32)
#define _WIN32
#endif
#define _WIN32_WINNT 0x0500
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <winbase.h>
#include <psapi.h>
#pragma comment(lib,"Psapi.lib")

#ifndef STATUS_INFO_LENGTH_MISMATCH
#define STATUS_INFO_LENGTH_MISMATCH	((NTSTATUS)0xC0000004L)
#endif
#define NtQuerySystemInformation _NtQuerySystemInformation
#include <winternl.h>
#undef NtQuerySystemInformation

#define SystemHandleInformation 16

typedef LONG KPRIORITY;
typedef struct {
		 int index;
		 bool hidden;
		 HANDLE handle;
		 TCHAR Name[MAX_PATH];
	} Process;
Process List[MPID];
SYSTEM_PROCESS_INFORMATION SystemPrInfo[MPID];

typedef struct {
    ULONG NextEntryOffset;
    ULONG NumberOfThreads;
    LARGE_INTEGER SpareLi1;
    LARGE_INTEGER SpareLi2;
    LARGE_INTEGER SpareLi3;
    LARGE_INTEGER CreateTime;
    LARGE_INTEGER UserTime;
    LARGE_INTEGER KernelTime;
    UNICODE_STRING ImageName;
    KPRIORITY BasePriority;
    HANDLE UniqueProcessId;
    HANDLE InheritedFromUniqueProcessId;
    ULONG HandleCount;
    ULONG SessionId;
    ULONG SpareUl3;
    SIZE_T PeakVirtualSize;
    SIZE_T VirtualSize;
    ULONG PageFaultCount;
    ULONG PeakWorkingSetSize;
    ULONG WorkingSetSize;
    SIZE_T QuotaPeakPagedPoolUsage;
    SIZE_T QuotaPagedPoolUsage;
    SIZE_T QuotaPeakNonPagedPoolUsage;
    SIZE_T QuotaNonPagedPoolUsage;
    SIZE_T PagefileUsage;
    SIZE_T PeakPagefileUsage;
    SIZE_T PrivatePageCount;
    LARGE_INTEGER ReadOperationCount;
    LARGE_INTEGER WriteOperationCount;
    LARGE_INTEGER OtherOperationCount;
    LARGE_INTEGER ReadTransferCount;
    LARGE_INTEGER WriteTransferCount;
    LARGE_INTEGER OtherTransferCount;
} MORE_SYSTEM_PROCESS_INFORMATION;

typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO {
    USHORT UniqueProcessId;
    USHORT CreatorBackTraceIndex;
    UCHAR ObjectTypeIndex;
    UCHAR HandleAttributes;
    USHORT HandleValue;
    PVOID Object;
    ULONG GrantedAccess;
} SYSTEM_HANDLE_TABLE_ENTRY_INFO, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO;

typedef struct _SYSTEM_HANDLE_INFORMATION {
    ULONG NumberOfHandles;
    SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[ 1 ];
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;

typedef NTSTATUS (WINAPI* NTQUERYSYSTEMINFORMATION)(DWORD, PVOID, DWORD, DWORD*); 
NTQUERYSYSTEMINFORMATION NtQuerySystemInformation;
static DWORD find(int* xt)
{	int k = 0;
	SIZE_T RequiredLength;
	NTSTATUS s;
	MORE_SYSTEM_PROCESS_INFORMATION *ProcTable,*Proc;
	RequiredLength=64*1024;
	ProcTable = (MORE_SYSTEM_PROCESS_INFORMATION *)VirtualAlloc(NULL,RequiredLength,MEM_COMMIT,PAGE_READWRITE);
	if (ProcTable == NULL) return -1;

	while ((s=NtQuerySystemInformation(SystemProcessInformation,
			ProcTable,
			(ULONG)RequiredLength,NULL))
			== STATUS_INFO_LENGTH_MISMATCH)
	{
		RequiredLength += 16*1024;
	    VirtualFree(ProcTable,0,MEM_RELEASE);
        ProcTable = (MORE_SYSTEM_PROCESS_INFORMATION *)VirtualAlloc (NULL,RequiredLength,
			MEM_COMMIT,PAGE_READWRITE);
	    if (ProcTable == NULL) return -1;
	}
	
	Proc=ProcTable;
	do {
		k++;
		RtlCopyMemory(List[(DWORD)Proc->UniqueProcessId].Name,Proc->ImageName.Buffer,Proc->ImageName.MaximumLength);
	    if(!List[(DWORD)Proc->UniqueProcessId].hidden){
			(*xt)++;
			printf("strange one: %.4X ", (DWORD)Proc->UniqueProcessId);
			_putts(List[(DWORD)Proc->UniqueProcessId].Name);
		}
	    List[(DWORD)Proc->UniqueProcessId].hidden = false ;
		Proc=(MORE_SYSTEM_PROCESS_INFORMATION *)((char *)Proc+Proc->NextEntryOffset);
	} while (Proc->NextEntryOffset);

	VirtualFree (ProcTable,0,MEM_RELEASE);

  return k;
}

void Enum2(){
	int f1 = 0, f2 = 0, xt = 0, z = 0;
	HMODULE hNtDll = LoadLibrary(TEXT("ntdll.dll"));
	NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)GetProcAddress(
        hNtDll, "NtQuerySystemInformation");
	for(int i = 0; i < MPID; i+=4){
		HANDLE p = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, false, i);
		HMODULE a; DWORD b=0;
		if (p&&(EnumProcessModules(p,&a,0,&b)||(b>0))||i==4){
	    	List[i].handle = p;
			GetModuleFileNameExW(p, 0, List[i].Name, MAX_PATH);
			CloseHandle(p);
			List[i].hidden = true;
			f1++;
		}else{
			if(p){
				List[i].handle = (HANDLE)-1;
				List[i].hidden = true;
				z++;
			}
		}
		
	}
	f2 = find(&xt);

	/**/
	int cpid = GetCurrentProcessId();
	//f1 -- : current
	f1--;
	f2--;
	/**/

#ifdef SHOW_ALL
	for (int i = 0; i<MPID; i+=4)
		if(List[i].handle && List[i].handle!=(HANDLE)-1 && i != cpid){
			printf("%.4X - ",i);
			if (List[i].hidden)
				printf("(warning! hidden one!) ");
			_putts(List[i].Name);			
		}
	printf("Zombies:\n");
	int k = 0;
	for (int i = 0; i<MPID; i+=4)
		if(List[i].handle==(HANDLE)-1){
			printf("%X",i);
			if (++k!=z) printf(", ");
		}
	printf("\n\n------------\n");	
	printf("all: %d + %d\nvisible: %d\nzombies: %d\n",f1, xt, f2, z);
#endif	
	int i;
	scanf("%c", &i);
}

bool SetDebugPrivileges() {
	LUID Luid;
	TOKEN_PRIVILEGES tpToken;
	HANDLE hToken;

	if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hToken)) {
		return false;
	}

	if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &Luid)) {
		CloseHandle (hToken);
		return false;
	}

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

	if (!AdjustTokenPrivileges(hToken, false, &tpToken, NULL, NULL, NULL)) {
		CloseHandle(hToken);
		return false;
	}

	CloseHandle(hToken);
	return true;

}

int main(){
#ifdef SEDEBUG
	SetDebugPrivileges();
#endif
	Enum2();
	return 0;
}
thx 2 slesh

>>у рема в phunter всё это было реализовано
Да тут нетрудно реализутся-то ) другое дело, что во время кодинга можно какие-то забавные вещи узнать.. вот например, оказалось, что во время загрузки программы (то есть при исследуемый pid = CurrentPid), в имени модуля лежит не имя экзешника, а полный путь..
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ

Последний раз редактировалось desTiny; 30.04.2009 в 22:38..
 
Ответить с цитированием

  #15  
Старый 30.04.2009, 23:07
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

<offtop>Тема прикольно развилась ) Начали за здравие закончили заупакой (только в нашем случае наоборот)</offtop>

А вообще для скрытия попробуйте заюзать код DLL из Delphi World - "Ныкаем программу от Ctrl Alt Del в WinXP"
Покрайней мере 6 каспер молчит на такое )
 
Ответить с цитированием

  #16  
Старый 30.04.2009, 23:15
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию

да.. точно.. сабж ведь есть) Вообще такая либа вроде работает (не знаю, может я что-нть лишнее вырезал, когда код выбирал - но вряд ли)
http://pastebin.com/f4b4169cf
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ

Последний раз редактировалось desTiny; 30.04.2009 в 23:18..
 
Ответить с цитированием

  #17  
Старый 04.05.2009, 00:51
dimarik-dima
Познающий
Регистрация: 24.01.2009
Сообщений: 56
Провел на форуме:
132567

Репутация: 9
По умолчанию

desTiny!!! slesh!!! Большое спасибо за внимание и за полезную информацию!!! кстати очень помогло!!! Конечно хотелось бы и узнать побольше про скрытые процессы и зомби!!!
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Секреты Windows 7 Campery Статьи 17 19.11.2009 02:33
Помогите скрыть ID nickname4ik Анонимность 7 16.02.2009 19:37
ЛЮДИ ПОМОГИТЕ В Delphi Bill С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 16 21.03.2006 04:39
Многопоточность в Unix KEZ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 11 10.08.2005 18:29



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ