Sì, e non richiede nemmeno molta abilità.
Ci ho provato una volta. Essendo un esercizio puramente accademico senza l'intenzione di farne alcun uso, ho scritto il più semplice trojan immaginabile in C ++: basta avviare un nuovo processo in background che apre un socket del server TCP e inoltra tutto ciò che arriva a system
. Non ho nemmeno cercato di offuscare ciò che stava facendo in alcun modo. Questa è tutta roba di base che mi aspetterei che ogni programmatore junior legga insieme in poche ore, anche se non hanno mai fatto nulla di simile prima. Per essere onesti, questo non sarebbe stato così pericoloso, perché non ha provato a sopravvivere al riavvio del sistema, non avrebbe funzionato sulla maggior parte delle reti di consumatori perché avrebbe richiesto il port forwarding se dietro NAT e non avrebbe ho lavorato su un server correttamente temprato perché la porta sarebbe stata bloccata da un firewall, ma volevo mantenere le cose il più semplici possibile
Quindi l'ho inviato a VirusTotal. Ho pensato che avrebbe ottenuto un colpo euristico dalla maggior parte dei motori AV.
Con mia sorpresa, solo due motori hanno avuto un successo, ed entrambi lo scambiarono per alcuni malware noti che non erano nemmeno trojan (in altre parole, falsi positivi). Gli scanner di virus sono molto bravi a catturare campioni di malware noti con le loro firme, ma quando si tratta di rilevare malware sconosciuti, sono estremamente inaffidabili (nonostante ciò che rivendicano i loro marketing). La ragione di ciò è che in realtà è molto difficile scrivere un programma che può determinare ciò che un altro programma arbitrario farà quando viene eseguito senza effettivamente eseguirlo.
Ciò significa che non puoi presumere che uno scanner di malware ti proteggerà da qualsiasi malware fino a quando non avrà raggiunto i laboratori dello sviluppatore.