Discussione Malware IP Pubblico con Delphi XE

Stato
Discussione chiusa ad ulteriori risposte.

mrcamarium

Utente Bronze
7 Gennaio 2022
68
16
1
26
Mi serve rintracciare il mio IP internet, con l'uso del TidIpWatch ottengo l'IP locale ma non quello che ho su internet, quando usavo delphi 7 usavo questo codice per ottenere l'IP assegnato su internet.
Codice:
function getIPs: Tstrings;
type
  TaPInAddr = array[0..10] of PInAddr;
  PaPInAddr = ^TaPInAddr;
var
  phe: PHostEnt;
  pptr: PaPInAddr;
  Buffer: array[0..63] of Char;
  I: Integer;
  GInitData: TWSAData;
begin
  WSAStartup($101, GInitData);
  Result := TstringList.Create;
  Result.Clear;
  GetHostName(Buffer, SizeOf(Buffer));
  phe := GetHostByName(buffer);
  if phe = nil then Exit;
  pPtr := PaPInAddr(phe^.h_addr_list);
  I    := 0;
  while pPtr^[I] <> nil do
  begin
    Result.Add(inet_ntoa(pptr^[I]^));
    Inc(I);
  end;
  WSACleanup;
end;
Adesso che uso delphi xe mi da questo errore:
[DCC Error] ip_mio.pas(41): E2010 Incompatible types: 'PAnsiChar' and 'array[0..63] of Char'
su questa riga:
GetHostName(Buffer, SizeOf(Buffer));
 

ZeusOn3

Utente Bronze
20 Gennaio 2020
77
3
7
26
Non ti capisco. Se ti serve trovare il tuo IP per un Server, vai nei siti web e c'è scritto... trovarlo in altri modi io dico, ti complichi la vita e basta...
 

ZeusOn3

Utente Bronze
20 Gennaio 2020
77
3
7
26
Ci sono altre alternative più facili per scoprire gli ip, a sto punto ti crei un sitoweb che traccia cookie etc e gli mandi il link e con una sola visita sai pure che browser utilizza da dove arriva che S.O. utilizza cioè che te ne fai di sapere solo l'ip, quando puoi sapere molto di più?
 

mrcamarium

Utente Bronze
7 Gennaio 2022
68
16
1
26
Ci sono altre alternative più facili per scoprire gli ip, a sto punto ti crei un sitoweb che traccia cookie etc e gli mandi il link e con una sola visita sai pure che browser utilizza da dove arriva che S.O. utilizza cioè che te ne fai di sapere solo l'ip, quando puoi sapere molto di più?
avendo l'IP posso collegarmi al server e posso avere tutte le informazioni che voglio.
 

ZeusOn3

Utente Bronze
20 Gennaio 2020
77
3
7
26
Ok, Sinceramente non mi interessa, e non so' darti la soluzione giusta.

Però alternative valide e migliori secondo me esistono.
 

JunkCoder

Moderatore
5 Giugno 2020
1,021
19
853
428
Vediamo se ho capito bene, il tuo problema è che non sai che IP mettere nel client per collegarlo al server? Questo approccio è comunque sbagliato, a meno che tu non abbia la garanzia di avere per sempre IP statico (e anche allora basterebbe saperlo una volta senza scrivere codice), la strada giusta è usare un DNS. Se non vuoi pagare per un dominio puoi usare DynDns o NO-IP che ti forniscono un sottodominio gratis. A quel punto inserisci l'host nel client al posto dell'IP (puoi usare la funzione del tuo codice GetHostByName per risolverlo) e nel server fai girare il programma demone come quello di NO-IP che aggiorna sempre i record DNS dell'host per farlo puntare all'IP corrente del server.
 
  • Love
Reazioni: 0xbro

mrcamarium

Utente Bronze
7 Gennaio 2022
68
16
1
26
Ultima modifica:
Vediamo se ho capito bene, il tuo problema è che non sai che IP mettere nel client per collegarlo al server? Questo approccio è comunque sbagliato, a meno che tu non abbia la garanzia di avere per sempre IP statico (e anche allora basterebbe saperlo una volta senza scrivere codice), la strada giusta è usare un DNS. Se non vuoi pagare per un dominio puoi usare DynDns o NO-IP che ti forniscono un sottodominio gratis. A quel punto inserisci l'host nel client al posto dell'IP (puoi usare la funzione del tuo codice GetHostByName per risolverlo) e nel server fai girare il programma demone come quello di NO-IP che aggiorna sempre i record DNS dell'host per farlo puntare all'IP corrente del server.
Forse non mi sono spiegato bene. Io so che IP usare, sto creando un serve che ogni volta che viene avviato mi manda il suo IP cosi che io mi possa collegare. Però tenendo in considerazione quello che ha detto ZeusOn3 il metodo che ho usato mi da solo l'IP locale in effetti comincia con 198, devo trovare un'altra strada per avere l'IP pubblico.
Messaggio unito automaticamente:

Facendo cosi dovrei ottenere l'IP pubblico:
Codice:
function TForm1.GetPublicIp: String;
          begin
      IdHttp1.Request.Host:= 'https://www.mio-ip.it';
      result := IdHttp1.Get('https://www.mio-ip.it');
end;
Il problema è che anche se lo compila senza errori mi restituisce in avviso quando premo il bottone:
IOHandler value is not valid
 

JunkCoder

Moderatore
5 Giugno 2020
1,021
19
853
428
No davvero, rileggi bene quello che ti ho scritto, fa esattamente quello che ti serve, una volta che registri il DNS sia il server che i client possono risolverlo in qualunque momento in modo rapido, è così che funziona internet. In particolare poi mi preoccupa la frase
sto creando un serve che ogni volta che viene avviato mi manda il suo IP cosi che io mi possa collegare
Perché il server non dovrebbe mandarti proprio niente, e poi come fa lui a sapere il tuo IP? E come fa a raggiungerti dovresti avere un altro server a tua volta. Vai in un loop logico che non può funzionare, ti consiglio di usare no-ip, configurarlo è una questione di 10 minuti e risolvere l'ip con GetHostByName altri 10.
 

mrcamarium

Utente Bronze
7 Gennaio 2022
68
16
1
26
No davvero, rileggi bene quello che ti ho scritto, fa esattamente quello che ti serve, una volta che registri il DNS sia il server che i client possono risolverlo in qualunque momento in modo rapido, è così che funziona internet. In particolare poi mi preoccupa la frase

Perché il server non dovrebbe mandarti proprio niente, e poi come fa lui a sapere il tuo IP? E come fa a raggiungerti dovresti avere un altro server a tua volta. Vai in un loop logico che non può funzionare, ti consiglio di usare no-ip, configurarlo è una questione di 10 minuti e risolvere l'ip con GetHostByName altri 10.
Per come manderà il suo IP è un problema che devo risolvere in un altro modo, devo fare un passo alla volta, come posso risolvere il problema con il codice che ho postato prima?
 

CrazyMonk

Utente Electrum
24 Dicembre 2021
383
14
181
134
Per come manderà il suo IP è un problema che devo risolvere in un altro modo, devo fare un passo alla volta, come posso risolvere il problema con il codice che ho postato prima?
Amico, quello che ti ha scritto JunkCoder è la soluzione perfetta per quello che ti serve perché ti permette di risolvere dinamicamente l'IP del tuo server. Se non sei in grado di capire quello che ti ha spiegato, senza offesa, non sei ancora pronto per affrontare questi argomenti, forse dovresti fare un ripassino generale :)
 

mrcamarium

Utente Bronze
7 Gennaio 2022
68
16
1
26
Amico, quello che ti ha scritto JunkCoder è la soluzione perfetta per quello che ti serve perché ti permette di risolvere dinamicamente l'IP del tuo server. Se non sei in grado di capire quello che ti ha spiegato, senza offesa, non sei ancora pronto per affrontare questi argomenti, forse dovresti fare un ripassino generale :)
Parto con la premessa che non mi offendo perchè do per scontato che non sempre riesco a farmi comprendere. In pratica tra le righe ho voluto far capire che sto server non è altro che un trojan, se conosci il software SUBME quando fu creato quasi 10 anni fa aveva questo sistema: il file serve sul pc della vittima mandava l'IP pubblico a chi aveva il cliente con una email. Cosi con l'IP e la porta già aperta si poteva entrare nel PC, devo dire che questo metodo non è tanto sicuro in quanto rende facile rintracciare chi ha infettato il PC, ma per cominciare è più che sufficiente. Mi scuso se non sono diretto, ma se vi dicessi che sto creando un trojan subito si parte pensando che ho cattive intenzioni.
Se riesco a far funzionare questo codice:
Codice:
function TForm1.GetPublicIp: String;
          begin
      IdHttp1.Request.Host:= 'https://www.mio-ip.it';
      result := IdHttp1.Get('https://www.mio-ip.it');
end;
lo posso usare per inviare una email sul mio PC e portemi collegare al PC, il problema è che il sito in questione usa un protocollo HTTPS quindi non so come modificarlo per adattarlo con questo protocollo.
 

JunkCoder

Moderatore
5 Giugno 2020
1,021
19
853
428
Conosco SubMe e il suo creatore, Massimiliano, ma tu ti riferisci alla versione del 2000, dopo si è adattato come il resto dei trojan (SubMe Reverse) ad usare una connessione reverse: il client va sul pc target, mentre il server è il tuo (lascia perdere che l'eseguibile continua a chiamarlo server, io parlo del tipo di socket). In questo modo non solo eviti rogne con IP, mail smtp, firewall ecc ma sorpassi il problema principale: che ormai sono tutti col wifi e probabilmente sotto NAT, anche se ti metti in ascolto su una porta non riuscirai a connetterti da fuori dalla rete senza abilitare il port forwarding sul router del target. Devi ridisegnare il tuo sistema di connessione altrimenti ti complicherai la vita e alla fine non funzionerà comunque.

PS: subme era ed è una merd* :asd:
 
  • Mi piace
Reazioni: mrcamarium

mrcamarium

Utente Bronze
7 Gennaio 2022
68
16
1
26
Ho usato in passato anche la versione Reverse. Ma adesso è inutilizzabile perchè lo vedono tutti gli antivirus. A questo punto il tuo discorso è più chiaro, continuo a sviluppare il cliente e il server nel fra tempo studio una soluzione per beccarlo in remoto. Grazie.
 

CrazyMonk

Utente Electrum
24 Dicembre 2021
383
14
181
134
Parto con la premessa che non mi offendo perchè do per scontato che non sempre riesco a farmi comprendere. In pratica tra le righe ho voluto far capire che sto server non è altro che un trojan, se conosci il software SUBME quando fu creato quasi 10 anni fa aveva questo sistema: il file serve sul pc della vittima mandava l'IP pubblico a chi aveva il cliente con una email. Cosi con l'IP e la porta già aperta si poteva entrare nel PC, devo dire che questo metodo non è tanto sicuro in quanto rende facile rintracciare chi ha infettato il PC, ma per cominciare è più che sufficiente. Mi scuso se non sono diretto, ma se vi dicessi che sto creando un trojan subito si parte pensando che ho cattive intenzioni.
Se riesco a far funzionare questo codice:
Codice:
function TForm1.GetPublicIp: String;
          begin
      IdHttp1.Request.Host:= 'https://www.mio-ip.it';
      result := IdHttp1.Get('https://www.mio-ip.it');
end;
lo posso usare per inviare una email sul mio PC e portemi collegare al PC, il problema è che il sito in questione usa un protocollo HTTPS quindi non so come modificarlo per adattarlo con questo protocollo.
Non ho mai sentito parlare del sistema che usi, ma secondo me ti conviene più creare una backdoor classica con programmi tipo MSFvenom ecc. ;)
 

JunkCoder

Moderatore
5 Giugno 2020
1,021
19
853
428
Non ho mai sentito parlare del sistema che usi, ma secondo me ti conviene più creare una backdoor classica con programmi tipo MSFvenom ecc. ;)

Perché consigliare la pappa pronta ad un utente che vuole imparare e implementare il suo? Inoltre le payload di metasploit saranno ben fatte ma sono molto minimali e ben conosciute, provare a crearsi la propria fa solo bene se non vuoi tutto e subito.
 
  • Mi piace
Reazioni: 0xbro
Stato
Discussione chiusa ad ulteriori risposte.