Newsgroup: it.comp.lang.visual-basic
Titolo: Prog VB6 e antivirus

Ho un programmino che all'improvviso è diventato pericoloso per Avast e ZoneAlarm
 
Sembrebbe che ci sia una funzione Api che lo insospetisce ma io non ho usato quella funzione: SetWindowsHook Window.
 
"The file installs an application-defined hook procedure into a hook chain. You would install a hook procedure to 
monitor the system for certain types of events. These events are associated either with a specific thread or with all 
threads in the same desktop as the calling thread. This is done making use of the SetWindowsHook Windows API function.
 
-- 
Greg


Il vurus che viene rilevato è: HEUR:Trojan.Win32.Generic
Che tipo di codice deve cercare nel sorgente? Per poterlo riscrivere e modificare? Grazie
 
-- 
Greg

 modificare? Grazie
 
Questa è il classico codice "non ci ho capito niente, eccoti un nome generico" di quando il warning viene scatenato da qualche funzione euristica; in parole povere, i classici falsi positivi che sono, ahimè, abbastanza frequenti.
 
Se non usi esplicitamente SetWindowsHook, potrebbe avere qualcos'altro tipo subclassing con SetWindowLong o cose del genere magari?!
 
Componenti OCX particolari, che fanno da wrapper per hardware/software esterni?!

 Componenti OCX particolari, che fanno da wrapper per hardware/software esterni?!
 
Niente di tutto questo.
Adesso mi sono cmopiato il solo form di avvio e il modulo bas e la classe e ho compilato, da ancora l'errore.
Piano piano procederò a togliere un pezzo di codice alla volta, sono curioso di capire cosa fa scattare l'allarme.
 
-- 
Greg

 Piano piano procederò a togliere un pezzo di codice alla volta, sono curioso di capire cosa fa scattare l'allarme.
 
Saraà lunga togliere tutto il codice pezzo a pezzo e poi compilare e testare, ma intanto lui continua avedere una 
fuznione che io non uso, la SetWindowHook
 
qui c'è il rapportino con piu informazioni:
https://www.virustotal.com/it/file/38ecefad6b5200e6c9e19b31725c9a895ee3058b4f344a9818ff5d3a0bdb6867/analysis/
 
 
-- 
Greg

 Piano piano procederò a togliere un pezzo di codice alla volta, sono curioso di capire cosa fa scattare l'allarme.
 
Sarà lunga togliere tutto il codice pezzo a pezzo e poi compilare e testare, ma intanto lui continua avedere una 
fuznione che io non uso, la SetWindowHook
 
qui c'è il rapportino con piu informazioni:
https://www.virustotal.com/it/file/38ecefad6b5200e6c9e19b31725c9a895ee3058b4f344a9818ff5d3a0bdb6867/analysis/
 
 
alla scheda Informazioni Comportamentali, e segnala pure un fallito accesso a vb6it.dll
 
-- 
Greg


 
Per vedere le chiamate alla API di un programma puoi usare API Monitor, io l'ho
usato la prima volta per vedere cosa faceva un programma che insospettiva
l'antivirus. (dentro una VM prima di installarlo per vedere se chiamava API
strane)
Poi ogni tanto mi serve ancora.
 
http://www.rohitab.com/downloads
 
 
 
Inizialmente è un po' laborioso da usare, ma consente di verificare diverse
cose.
 
Se effettivamente il tuo programma usa SetWindowsHook, tra l'altro una funzione
nient'affato speciale, (io la uso anche in una funzione per chiudere i msgbox),
devi capire quale ocx la usa e con che parametri, il programma che ti ho
consigliato può aiutare, ma bisogna smanettare un po'.
 
 
-- 
ciao
  Stefano

 consigliato può aiutare, ma bisogna smanettare un po'.
 
Il fatto è che quella funzione non c'è neanche nelle dichiarazioni del modulo, mai usata proprio!
 
-- 
Greg

Il fatto č che quella funzione non c'č neanche nelle dichiarazioni del modulo, mai usata proprio!
 
Beh, se tu non la usi direttamente, allora l'idea č che la SetWindowsHook sia
usata da un OCX o da una DLL che il tuo programma adopera.
 
 
-- 
ciao
  Stefano


Come prima cosa cercherei di capire perché, quindi, per evitare i falsi 
positivi, andrei in progetto > proprietà > compila e modificherei il 
modo in cui VB scrive il codice, quindi userei P-Code o Codice Nativo e 
starei a vedere cosa accade.
 
Solo dopo metterei le mani su cosa fa il mio programma.
 
 
-- 
GbC
www.gbc.uno

 cosa accade.
 
E' impostato Codice Nativo. Ma non ho capito coda fare: se è nativo scelgo p-code e viceversa?
 
-- 
Greg

 usata da un OCX o da una DLL che il tuo programma adopera.
 
Sto lavorando di fino su una copia del prog, sembra sia una WriteProfileString a far scattare l'allarme.
Appena avrò finito sarò piu preciso
 
-- 
Greg


Si. Cambiando le opzioni del compilatore il codice scritto 
nell'eseguibile è diverso. Se è un falso positivo l'AV non riconoscerà 
questo nuovo exe come virale.
 
Se continua a prenderlo per un virus allora devi approfondire.
 
È un test semplice che elimina una possiilità.
 
 
-- 
GbC
www.gbc.uno

Appena avrņ finito sarņ piu preciso
 
WriteProfileString scrive un dato in un file .ini, non mi sembra roba da
impressionare un antivirus, ma non si sa mai...
 
 
-- 
ciao
  Stefano

 impressionare un antivirus, ma non si sa mai...
 
Eccolo qua:
 
SavLog "Num_Processor", Environ("NUMBER_OF_PROCESSORS")
SavLog "Processor-Type", Environ("PROCESSOR_IDENTIFIER")
'CurrH = Screen.Height / Screen.TwipsPerPixelY
'CurrW = Screen.Width / Screen.TwipsPerPixelX
'SavLog "Display", CurrW & "x" & CurrH
 
Commentando le 3 righe, tutte insieme non una sola, il test viene passato.
Non può essere la SavLog (che usa la WritePrileString) perchè le due righe prima vanno bene.
Quindi rimane il risultato di due divisioni assegnato ad una variabile. Forse il nome delle variabili ha un significato 
per i due antivirus in questione? Avast e ZoneAlarm
 
Ma è una roba assurda! E questi mi dovrebbero proteggere dai virus veri? Qualche dubbio mi viene
 
-- 
Greg

Ma è una roba assurda! E questi mi dovrebbero proteggere dai virus veri? Qualche dubbio mi viene
 
Mah, sull'efficacia dell'euristica non sei il solo ad avere dei dubbi, e anche
degli antivirus in generale, visto che si sono rivelati inefficaci nella
prevenzione dei ransomware.
 
Io resto della mia idea che il miglior antivirus sta tra la sedia e la tastiera,
di marca "brain".
 
 
-- 
ciao
  Stefano

Il 23/05/2017 16:30, Greg ha scritto:

com'è andata?
hai provato?
 
non ci credo neanche se lo vedo che il codice che hai indicato come 
incriminato sia la causa di tutto
 
la stessa cosa che è successa a te mi è successa varie volte ed ho 
risolto come ti ho indicato o contattando i produttori dell'AV
 
tieni conto che c'è chi scrive codice malevolo in vb, quindi è possibile 
che una sequenza di istruzioni venga interpretata a piffero
 
 
-- 
GbC
www.gbc.uno

 di marca "brain".
 
Certamente... purtroppo l'utente comune non ha i mezzi, le conoscenze e 
l'esperienza per riconoscere una mail reale da una fasulla, un link o un 
allegato sospetto...
 
E per quanto ci si possa sforzare ad alcuni utenti sarà difficile 
farglielo entrare in testa, pur non essendo gli stessi utenti "tonti" o 
"deficienti".
 
 
 
-- 
Daniele Pinna
DAPINNA.COM
 
(leva oops per rispondere)
-----
Utente Skype: dapinna
DAPINNA.COM
        :  
http://www.dapinna.com
 
Il Docfa in Pillole:  
http://www.ildocfainpillole.it
 - Sito Aggiornato!!!
DAPINNA.COM
 su Facebook: 
https://www.facebook.com/dapinnadotcom
 
BLOG: 
http://storielaboratorioinformatica.wordpress.com
 

 interpretata a piffero
 
Ho provato a scrivere le 3 righe in modo diverso, cambiano nome alle variabili e spostando il tutto qualche riga sopra, 
ma non è cambiato nulla
 
-- 
Greg

 bloccato la "manina con il clic più veloce del cervello" di qualche cliente :-)
 
Quanti dei 50 clienti usano NOD? E quanti hanno aperto una mail con il ramson? Magari nessuno, e allora NOD fa una 
bella figura
 
-- 
Greg

 
Hai aggiornato gli AV dal momento in cui ti hanno segnalato il problema? 
Io risolsi inviando il mio eseguibile.
 
Comunque non ti faccio perdere altro tempo. Grazie
 
-- 
GbC
www.gbc.uno

 Magari nessuno, e allora NOD fa una bella figura
 
Be qualcuno si... è ha fatto il suo lavoro :-)
 
Fra i clienti che hanno preso un Ransomware, oltre a chi usa AV 
Gratuiti, c'è pure un cliente che è passato da NOD32 a Panda (per 
risparmiare circa 15€/macchina), criptando oltre 65 mila file su un NAS 
(che usano come server). Fortunatamente sono riuscito a recuperare i 
file da un Backup...


 a Panda (per risparmiare circa 15€/macchina), criptando oltre 65 mila file su un NAS (che usano come server). 
 
Adesso mi sorge il dubbio che possa essere un rivenditore di NOD
 
-- 
Greg

 Comunque non ti faccio perdere altro tempo. Grazie
 
Ma figurati! Sono io che ti faccio perdere tempo :)
 
-- 
Greg

 Adesso mi sorge il dubbio che possa essere un rivenditore di NOD
 
Mi occupo di assistenza e vendita di prodotti informatici.
Come posso vendere NOD32, posso vendere Kaspersky, Panda, Symantec etc.


faccio a trovarlo?
 
sup...@avira.com
 , per esempio, poi sul sito di ogni produttore c'è un modo di
contattare il supporto.
 
 
 
-- 
ciao
  Stefano

 cosa succede?
 
Bravo!
Spetta li che provo subito!
 
-- 
Greg

 cosa succede?
 
Grande SB!
Ho fatto quello che dici e risulta indigesto ad altri 2 antivirus diversi da prima, Cyren e F-Prot vedono 
VbTrojanF1!Maximus
 
 
Ecco il codice da incollare in un modulo e compilare, poi testare l'eseguibile su 
virustotal.com
:
 
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName 
As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
 
Sub SavLog(Chiave As String, Valore As String)
  Dim x As Long
  Chiave = "- " & Chiave
  x = WritePrivateProfileString("Start", Chiave, Valore, App.Path & "\LogFile.txt")
End Sub
 
Sub Main()
   CurrH = Screen.Height / Screen.TwipsPerPixelY
    CurrW = Screen.Width / Screen.TwipsPerPixelX
    SavLog "Display", CurrW & "x" & CurrH
    fMain.Show
End Sub
 
-- 
Greg

 End Sub
 
----------------------------------------------
Progetto1 (non ho creato un modulo ma inserito tutto in un form, 
inserito la option explicit e compilato; ho provato anche con l'UPX 
perché lo uso molto):
 
codice nativo + ottimizza PULITO <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<:
https://www.virustotal.com/it/file/315669d6fb0f013bcb7dad3e141e07acf2633b09b3b86a7490ac13224219e3f2/analysis/1495696765/
 
http://tinyurl.com/m6bzfqt
 
 
PCode 3 RILEV MA 0/0:
https://www.virustotal.com/it/file/d0e17df89b6650fe0cffcc69bb97bfb8dcda2cc4418a83fd4272630fa3b6e3fa/analysis/1495697010/
 
http://tinyurl.com/mrkjv9v
 
 
----------------------------------------------
Progetto2 (esattamente com dice Greg senza option explicit e con il 
codice in un modulo):
 
codice nativo + ottimizza 1 RILEV MA 0/0:
https://www.virustotal.com/it/file/828dc20a0554674afa239d50bc2c92d1d337e8086ffe47b0947ddce1d29a65a8/analysis/1495697411/
 
http://tinyurl.com/m9wc4xg
 
 
PCode 3 RILEV MA 0/0:
https://www.virustotal.com/it/file/fd8b78291f0b378173b45161ebbc3f59ae10aa55bfc997ef97d70bf0e530f714/analysis/1495697641/
 
http://tinyurl.com/k3c79xc
 
 
----------------------------------------------
I rilevamenti erano effettuati solo da AV poco blasonati, quindi da 
prendere con le molle... Solo che se un cliente ne ha uno non è divertente.
 
 
ciao cia'
 
 
-- 
GbC
www.gbc.uno


scusa, non ho inserito i risultati degli exe compressi upx perché 
comuqnue alcuni motori quando vedeno UPX non sono affatto felici
 
 
-- 
GbC
www.gbc.uno


***********************
 
Bye, G.

 ne ha uno non è divertente.
 
AVG è abbastanza diffuso. Ad ogni modo grazie per ilte st, non ero sicuro che avrebbe dato positivo anche a te.
E comunque la spiegazione è ancora piu misteriosa, perchè quella sub scrivere su un file la uso identicada da anni in 
altri progetti dove non viene rilevato nulla!!!
 
-- 
Greg

 password, altrimenti col cappero che passa :-D
 
Ti do il link:
https://www.virustotal.com/it/file/16ee97f3a265b52c4d3b0d81e295a35de92e65ff1b7b48e5491388f9615fb7ed/analysis/1495704574/
 
E' bocciato da 3 AV tra cui F-Prot
 
Se vuoi l'eseguibile il massimo che posso fare è rinominarlo in txt, non c'è bisogno di comprimere pesa solo 20 k, e 
per la crittografia non sono attrrezato :)
 
-- 
Greg

 attrrezato :)
 
Non è una questione di peso: è che se il server mail vede
passare  un eseguibile lo stoppa, senza se e senza ma.
Basta usare un qualunque programma per zippare e mettere
la password. Il migliore è probabilmente 7zip (gratuito).
E va rinominato perché lo scanner controlla anche gli zip,
se ci vede dentro un exe lo blocca anche se non riesce ad
aprirlo.
Ma con la combinazione rinomina/cripta si riesce a passare.
 
Bye, G.

 Bye, G.
 
Fatto tutto come da istruzioni e inviato
 
-- 
Greg

Ma con la combinazione rinomina/cripta si riesce a passare.
 
Io di solito mi limito a zipparlo e a rinominare il .zip in un .dat, di solito
passa senza problemi.
 
-- 
ciao
  Stefano

Il 25/05/2017 11:55:28 Paperino ha scritto:
 
Ciao Paperino,
ricevuto tutto? Non vorrei averti fulminato il pc :)
 
-- 
Greg


Naaaahhh :-P
Ho semplicemente avuto un po' da fare in questi giorni...
 
Allora, il punto principale e importante è che è sicuramente
pulito, visto che nonostante tutto qualche dubbio uno poteva
averlo.
 
Ho controllato sia aprendo il file, sia analizzandolo a mano
con ProcMon e altro per vedere cosa fa.
A parte un paio di chiamate di sistema leggermente diverse al
momento dell'apertura della VM di VB6 (vedi sotto), il comportamento
è virtualmente identico..
Tra l'altro, adesso sono in 4 gli AV su Virustotal che lo
riconoscono :-(
 
Per tutti si tratta comunque di un riconoscimento generico;
alcuni dei nomi e degli alias di quel riconoscimento sono:
BackDoor.Generic.738, W32/VBTrojan.19F2!Maximus,
Win32/DelfInject.gen!AC, Suspicious.Cloud.2, Win32/VB.RGB
Suspicious_Gen2.WADLY, PE:Trojan.Win32.Generic.15D390B2!366186674
Mal/Behav-034, PAK_Generic.001, Generic.dx!E3E721EADB9A
...eccetera.
 
In altre parole, un /qualche cosa/ scritto in un VB6 di qualche
anno fa. Il perché non venga riconosciuto anche il mio può
dipendere da una questione di versione di qualche componente
di VB, presumibilmente il compilatore che effettua delle chiamate
leggermente diverse. Il come e il perché probabilmente non lo
sanno più neanche quelli della MS, se li conosco bene :-)
 
L'ultima possibilità resta quella degli aggiornamenti: nella mail 
specificavi che l'ultimo che hai è l'SP6, ma dopo l'SP6 in effetti
*c'è* stato altro. Questo "cumulative update" del 2012 ce l'hai?
https://www.microsoft.com/en-us/download/details.aspx?id=7030
 
 
Bye, G.

 Bye, G.
 
 
Ma facevi a saperlo? IO ero fermo a SP6. Si era detto ai 4 venti che MS nom avrebbe dato piu una virgola su VB6...
Comunque grazie per il link, ho aggiornato, ricompilato e testato e si. adesso sono 4 gli AV che lo danno com 
epositivo.
 
Ma tu, oltre a provare il mio exe (miscredente!) hai anche provato a copincollare le 4 righe di codice in un progetto 
vuoto? E il risultato?
 
-- 
Greg

 vuoto? E il risultato?
 
L'avevo postato prima. Ora da telefonino è un casino, ma se
guardi uno o due dei miei post sopra lo trovi: un solo positivo,
come generico. È lo stesso exe che ho usato per il confronto col tuo.
 
Bye, G.

Greg ha scritto:

[mi aggancio qui un po' a casaccio, tanto è OT O:-)]
 
Una delle vulnerabilità patchate da poco da MS - e fateli,
'sti cavolo di aggiornamenti! - permette di infettare una macchina
anche solo mentre visualizza un sito infetto o... peggio.
Per esempio ricevendo una mail infetta, senza che venga
neanche aperta e tantomeno che venga cliccato qualcosa all'interno:
è sufficiente che venga *ricevuta*.
 
Poi, a infettare la macchina ci pensa... *l'antivirus*.
 
 
Sì. Avete letto bene.
No, non mi sono sbagliato.
No, non sto sparando cazzate.
No, non è una bufala.
Sì, aggiornate MSE *ora*, se non lo fate da un po'.
Sì, anche se non lo usate. (Un po' perché non si sa mai, e poi
 perché ho un sospetto
e sto aspettando che venga smentito o confermato).
 
Bye, G.

 Bye, G.
 
Si si, lo so, chissà cosa pensavo :(
 
-- 
Greg

 e sto aspettando che venga smentito o confermato).
 
L'ho provato tante volte, ma alla fine non sono mai riuscito a fre nulla con MSE
Ma tu appena hai la conferma o la smentita, divulga. Più se ne sa e meglio è :)
 
-- 
Greg

 e sto aspettando che venga smentito o confermato).
 
Per MSE intendi Windows Defender?
Sul mio PC è disattivato (credo per il semplice fatto che c'è un altro 
AV installato).
 
Se è disattivato non dovrebbe entrare per niente in funzione... o sbaglio?
 
Hai maggiori info riguardo questo "BUG"? Magari qualche link...


 Hai maggiori info riguardo questo "BUG"? Magari qualche link...
 
Premessa: è un sito di m...a, usate NoScript o qualcosa di simile.
Sotto c'è il link breve.
 
http://ibankcoin.com/zeropointnow/2017/05/09/horrendous-security-f
 
law-allows-windows-to-be-taken-over-by-single-unopened-email-msft/
 
https://goo.gl/H9KyAD
 
 
Ah, per buon peso accludo un altro link su come piantare un PC con
un sistema simile a quelli che si usavano con W9X:
https://arstechnica.co.uk/information-technology/2017/05/in-a-thro
 
wback-to-the-90s-ntfs-bug-lets-anyone-hang-or-crash-windows-7-8-1/
 
https://goo.gl/O3NsQe
 
 
Dite la verità, non vi viene un po' di nostalgia? :-)
 
Bye, G.

 Eccome no! Ti devo una birra :)
 
Ora che vado su un PC ripesco il tutto :-)
 
Bye, G.

 che so, Avira per mettere AVG. Fra l'uno e l'altro...?
 
Insomma dalla padella alla brace :-D :-D :-D
 
In effetti ho notato che si attiva Defender quando installo la nuova 
versione di NOD32 quando viene prima disinstallata la vecchia 
versione... ma normalmente non dura più di un minuto.



E' qui, ma non puoi scaricarlo: devi richiederlo per email :-(
http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=974899
 
 
Buon divertimento :-D
 
Bye, G.

 a VB6 appena può >:-[, ritrovarli è una caccia al tesoro.
 
Eh, MIcrosoft! Cercando in rete una spiegazione per questo falso positivo mi sono imbattuto in questo articolo del 
2014:
http://maurorossi.net/pagine/articoli/vbgigante.htm
 
 
Ho messo l'aggiornamento 2012 su un pc, immagino che il Rollup incorpori anche l'aggiornamento e non ci sia bisogno di 
mettere prima uno poi l'altro.
 
Diversamente da SP3 o SP6, il progetto creato su macchina con l'aggiornamento 2012 installato, se lo porto su una 
macchina senza aggiornamento, qusto si apre senza problemi. Meglio cosi.
 
Grazie per la gentilezza e la precisione estrema! :)
 
-- 
Greg


 
P.S.: ho già controllato tutti i file linkati con Virustotal ;-D
 
Bye, G.

 End Sub
 
Dopo uno scambio di battute con GbC sul altro ng, ho ripreso in mano quel vecchio codice indigesto a qualche antivirus 
compreso Kaspersky, e l'ho modificato in questo modo:
 
    h1 = Screen.Height
    h2 = Screen.TwipsPerPixelY
    w1 = Screen.Width
    w2 = Screen.TwipsPerPixelX
    --------
    --------
    SavLog "MNT", CStr(h2) & " " & CStr(w2) & " "
 
Il codice risultava infetto anche scrivendo SavLog "Diplay" o "MOnitor"
Allora ho cambiato in SavLog "MNT" e, convinto che sia unq questione di pattern o nomi di variabili sospetti, ho 
spostato la SavLog in avanti, dopo altre due righe di codice.
 
Non capisco il perchè, e neanche prima, ma adesso Kasperscky non segnala piu un falso positivo.
 
 
 
-- 
Greg


Nessuna euristica può segnalare quelle operazioni logiche come un virus, 
perché qualsiasi programma fa quelle operazioni.
 
Quindi il problema (per la mia esperienza) si riduce a modificare la 
matrice di bit costituita dall'eseguibile. Questo si può fare 
modificando il codice (il flusso dei dati, il nome delle funzioni, ecc) 
o cambiando le opzioni di compilazione.
 
Questo una volta in più dimostra quanto sia tutto un castello di carte.
 
-- 
GbC
www.gbc.uno