L'aggancio dell'API è stato eseguito come necessario affinché Stuxnet funzioni? Io non la penso così

3

Caveat: sono uno studente di scienze politiche e ho cercato di migliorare il mio livello per comprenderne gli aspetti tecnici; se suono ancora ingenuo, per favore, ignoralo.

Nel rapporto Symantec su Stuxnet , gli autori Dite che una volta che il worm infetta il computer Windows a 32 bit che ha una configurazione WINCC su di esso, Stuxnet fa molte cose e che in particolare aggancia la funzione CreateFileA() . Questa funzione è il percorso utilizzato dal worm per infettare effettivamente i file di progetto .s7p utilizzati per programmare i PLC. cioè quando il programmatore PLC apre un file con .s7p il controllo trasferisce alla funzione agganciata CreateFileA_hook() invece di CreateFileA() . Una volta che Stuxnet ha ottenuto il controllo, inserisce segretamente blocchi di codice nel PLC senza la conoscenza dei programmatori e lo nasconde dalla sua vista.

Tuttavia, va notato che c'è anche un'altra funzione chiamata CreateFileW() che svolge lo stesso compito di CreateFileA() , ma entrambi funzionano su set di caratteri diversi. CreateFileA funziona con il set di caratteri ASCII e CreateFileW funziona con caratteri ampi o set di caratteri Unicode. Il farsi (la lingua degli iraniani) è un linguaggio che richiede un set di caratteri unicode e non caratteri ASCII. Suppongo che gli sviluppatori di qualsiasi famoso software commerciale (per esempio WinCC) che sarà venduto in molti paesi prenderanno in considerazione "Localizzazione" e / o "Internazionalizzazione" mentre è in fase di sviluppo al fine di rendere il prodotto fail-safe cioè. gli sviluppatori di software utilizzerebbero UNICODE durante la compilazione del loro codice e non solo "ASCII". Quindi, penso che CreateFileW() sarebbe stato invocato su un sistema WINCC in Iran anziché CreateFileA() . Sei d'accordo?

La mia domanda è: se Stuxnet ha agganciato solo la funzione CreateFileA() , in base all'ipotesi sopra riportata, c'è una possibilità significativa che non funzioni affatto? Penso che il mio dubbio verrà chiarito se: la mia ipotesi è smentita, o il rapporto di Symantec è dimostrato errato. Per favore aiutami a chiarire questo dubbio.

Modifica: per maggiore chiarezza della mia domanda e cosa sto cercando.

È possibile che WinCC STL Editor sia programmato nel modo seguente?

//Pseudocode Begins
if (locale == ASCII Dependent) //like US, UK, Australia etc.
{
     CreateFileA(); //with appropriate parameters
}
else if (locale == UNICODE Dependent) //like Middle East, China, Japan etc
{
     CreateFileW(); //with appropriate parameters
} //Pseudocode ends

Se è possibile, allora Stuxnet funzionerebbe in modo appropriato negli Stati Uniti ma non in Cina, in Giappone o in Iran?

    
posta The Kaykay 14.04.2012 - 12:16
fonte

3 risposte

3

Molte opere tecniche sono eseguite tutte in inglese, è la lingua franca della programmazione. Non è particolarmente raro per le squadre straniere lavorare, codificare e documentare esclusivamente in inglese. Ad esempio, guarda il progetto Lua, scritto da un gruppo di brasiliani. Documentazione? Soltanto inglese. I nomi dei file? Tutto inglese. E il codice PLC non supporta nemmeno Unicode, quindi non è come se gli iraniani avessero la possibilità di lavorare tutti in arabo.

Mi sorprende che non abbia agganciato CreateFileW, ma suppongo che sapesse in anticipo che WinCC utilizza solo CreateFileA.

    
risposta data 14.04.2012 - 12:32
fonte
3

Tieni presente che CreateFileA e CreateFileW differiscono solo nel set di caratteri di il nome file stesso . I contenuti effettivi del file sono solo byte in entrambi i casi e sono liberi di essere interpretati dal programma nel modo che preferisce.

In realtà, in tutte le moderne versioni di Windows, le funzioni *A sono in genere solo wrapper molto sottili attorno alle funzioni *W in cui tutto ciò che fanno è convertire gli argomenti in / da Unicode.

    
risposta data 14.04.2012 - 14:24
fonte
3

I'm assuming that the developers of any famous commercial software (for ex. WinCC) that will be sold in many countries will take 'Localization' and/or 'Internationalization' into consideration while it is being developed in order to make the product fail-safe ie. the software developers would use UNICODE while compiling their code and not just 'ASCII'. Thus, I think that CreateFileW() would have been invoked on a WINCC system in Iran instead of CreateFileA(). Do you agree?

Oggi sì. Ma WinCC fu introdotto per la prima volta nel 1995. Allora, Unicode era ancora piuttosto nuovo e non era comune che i programmi supportassero l'unicode. Tra le altre ragioni, sarebbero stati eseguiti su Windows 95/98 / ME, che non ha mai supportato l'Unicode.

Al contrario, le persone utilizzavano codepages per visualizzare caratteri non latini: In poche parole, devi dire al sistema operativo che il tuo processo stava usando codepage 1256 adesso e il sistema operativo mostrerebbe i caratteri nel 128 ..255 range come caratteri originali (se si dispone dei caratteri giusti).

My question is: If Stuxnet has hooked only the function CreateFileA() then based on the above assumption there is a significant chance that it did not work at all?

Chiunque abbia creato Stuxnet non ha semplicemente scritto un worm che si aggancia a CreateFileA e spera che WinCC possa chiamare CreateFileA alla fine. Sono sicuro che avevano una copia della versione esatta di WinCC che stavano prendendo di mira. Probabilmente lo hanno eseguito il debug per scoprire in quale funzione agganciarsi. Se WinCC fosse stato creato usando unicode, si sarebbero agganciati invece a CreateFileW .

    
risposta data 14.04.2012 - 15:17
fonte

Leggi altre domande sui tag