Qual è il modo migliore per creare il database delle firme antivirali? [chiuso]

-7

Stiamo pensando di sviluppare un nuovo programma antivirus. La preoccupazione principale è creare un database di firme antivirali. Voglio chiedere qual è il modo migliore per aggiungere la firma dei virus nel nostro database per renderlo un DB strong. guidaci gentilmente nel modo migliore possibile.

Nota: sarà in MD5

    
posta Ella Bleu 08.02.2016 - 14:15
fonte

2 risposte

5

L'anti-virus basato su MD5 non funziona

L'anti-malware basato su MD5 funziona in modo decente contro le infezioni statiche che non cambiano mai. Se cambia anche un po ', sei fregato. Tuttavia, MD5 è anche vulnerabile a collisions , quindi avrai una buona dose di falsi positivi.

Non farei affidamento su questo metodo. SHA-256 sarebbe probabilmente meglio per questo compito. Tuttavia, questo porta al prossimo problema ...

I "virus" possono unirsi con gli eseguibili esistenti

Un problema più grande è che i virus possono fondersi su un eseguibile esistente, non dannoso e renderlo dannoso. L'autore può iniettarlo in vari punti del programma e rendere l'hash completamente diverso ogni volta.

Cambiando la loro fonte, o persino ricompilando il virus, ti sconfiggere

Non solo, ma cambiando il codice solo un po ', puoi evitare completamente il rilevamento perché avrai sempre un nuovo hash. Dovrai aggiungere un hash per ogni possibile modifica a ogni file, il che non è affatto pratico.

Anche se potessi fare ciò, come vorresti sapere che il file fosse malevolo? Hai confrontato l'hash con quello elencato sul sito? Bene, con MD5, è possibile falsificarlo provocando una collisione.

Se vuoi seguire la rotta hash, anche se hai trovato un algoritmo hash che non ha nessuna possibile collisione, allora avresti letteralmente bisogno di una gigantesca lista bianca di hash validi per tutti i programmi legittimi conosciuti. E poi li confronterai con quello che sono.

Anche se disponi di un buon algoritmo di hashing, non è solo pratico, o addirittura possibile.

Qual è il modo migliore per creare il database delle firme antivirali?

Questo è troppo ampio per rispondere qui.

È molto difficile creare software anti-virus. Anche se questo post è fuori tema, sto rispondendo nella speranza che tu non scenderai in questo oscuro percorso, poiché offrirà solo un falso senso di sicurezza.

    
risposta data 08.02.2016 - 14:47
fonte
2

Mark Buffalo ha già fornito una buona risposta sulle cose da considerare. Tuttavia, mi piacerebbe ampliare la sua risposta con poche soluzioni, naturalmente è una domanda estremamente ampia, quindi non è affatto lontanamente vicino a una soluzione "migliore". Sono solo cose da considerare.

Farò molte ipotesi sulla base di questa domanda e saranno:

  • Il sistema operativo che usi è Windows
  • La tua architettura di sistema è x86 o x64
  • Hai una buona conoscenza degli interni di Windows.

I "virus" possono unirsi con gli eseguibili esistenti Ci sono così tanti modi su come eseguire bind eseguibili.

Diciamo che abbiamo "notepad.exe" come programma legittimo e "virus.exe" che è il malware. Virus.exe potrebbe scrivere se stesso nel RAT (Resource Address Table) di notepad.exe e sostituire l'OEP (Original Entry Point) con il suo caricatore personalizzato che eseguirà il codice malware quindi eseguirà notepad.exe.

Puoi sconfiggerlo leggendo il RAT e facendo una firma PE .text

Code Project - .Text Checksum

Tenete presente che questo può essere vanificato da metamorfismo e polimorfismo che il codice viene modificato su ogni esecuzione risultante in un hash univoco per il testo. ma è molto più difficile da eseguire. Leggi il codice di z0mbie su come è stato eseguito e così via.

z0mbie - Esempio di codice malware ecc

Potresti solo sconfiggerlo con misure estreme che sono inconsapevole di essere stato automatizzato, sono cose che vengono eseguite in uno squilibrio che è legato al malware. Ad esempio, supponiamo che DeleteFileW( L"C:\SomeImportantFile.exe" ); sia, supponiamo che il codice sia il seguente:

MOV EAX, 0x12345
PUSH EAX
CALL Kernel32.DeleteFileW

Ora in termini di efficienza sarà lento ma potresti firmare PUSH EAX, CALL dato che saranno sempre gli stessi byte e nel tuo codice leggere quali valori sono tenuti a 0x12345 dato che questo indirizzo di memoria sarà probabilmente diverso.

Cambiare la loro fonte, o persino ricompilare il virus, ti sconfiggerà Da quanto sopra puoi aggirare questo.

Coprire altri punti di cui non si è parlato:

  • iniezione Dll
  • Iniezione di codice
  • aggancio SSDT
  • Patch del kernel

Credo che questa domanda sia più una domanda per link Tuttavia, credo che sia troppo approfondito per rispondere.

    
risposta data 08.02.2016 - 15:34
fonte

Leggi altre domande sui tag