Problema di dipendenza dell'architettura associato a payload dannosi

4

La mia domanda riguarda le restrizioni architettoniche associate ai payload backdoor / bind / reverse tcp utilizzati in genere per ottenere shell attraverso lo sfruttamento.

In una situazione in cui l'architettura del box di destinazione (x86, x64, ARM, ecc.) è sconosciuta.

  1. Un payload x64 funzionerebbe su un'architettura x86 senza l'intervento dell'utente? Ad esempio, Windows richiede all'utente di eseguire eseguibile in modalità capacità.
  2. Esiste una soluzione per la consegna del payload che non ha dipendenze architettoniche?
  3. La codifica di un carico utile x64 con un codificatore x86 crea problemi di compatibilità quando viene eseguito?

Qualsiasi aiuto è apprezzato! Lo apprezzo perché risparmierò tempo chiedendo qui piuttosto che test manualmente.

    
posta Sh1nu11bi 11.02.2015 - 17:05
fonte

1 risposta

2

1. Un payload x64 può funzionare su un'architettura x86

Gli eseguibili a 64 bit non possono funzionare su architetture x86 perché ci sono due diverse differenze tra le architetture. Oltre le limitazioni dello spazio degli indirizzi ci sono registri a 64 bit che semplicemente non esistono. I parametri per le funzioni sono gestiti in modo completamente diverso. Le istruzioni della macchina operano in modo diverso.

Windows 64-bit contiene molto codice per garantire che ci sia compatibilità per i programmi x86 da eseguire su un'architettura x64, ma gli eseguibili devono essere scritti per trarne vantaggio. In questo caso l'exploit dovrebbe essere costruito come un'applicazione a 32 bit e utilizzare il sottosistema WOW64 . Questo sottosistema è come una sandbox per eseguire applicazioni a 32 bit. Emula essenzialmente un sistema a 32 bit ai fini dell'esecuzione.

2. Esiste una soluzione per la consegna del payload che non ha dipendenze architettoniche?

I compilatori compilano per un'architettura specifica. Come ho detto sopra, il codice indipendente dell'architettura richiede un po 'di tempo di emulazione. Ad esempio, Java utilizza una macchina virtuale per l'esecuzione su più piattaforme. Questo ha un costo in termini di prestazioni.

3. Codificare un payload x64 con un encoder x86 crea problemi di compatibilità quando viene eseguito?

Non so cosa sia un encoder x86. Se intendi che stai trasformando il codice macchina x64 nel codice macchina x86 ... potresti anche creare x86 per iniziare. Dal momento che è praticamente la stessa cosa.

    
risposta data 11.02.2015 - 17:57
fonte

Leggi altre domande sui tag