Questo programma non può essere eseguito in modalità DOS

3

Sto facendo un pentest su una scatola di Windows XP e ho raggiunto una shell con bassi privilegi. In quanto tale, sto cercando di aumentare i miei privilegi. Comunque, ogni .exe che cerco di eseguire mi sta dando "Questo programma non può essere eseguito in modalità DOS". C'è qualche tipo di configurazione che devo cambiare sulla scatola o esiste una strategia diversa per l'escalation dei privilegi in un ambiente come questo? "

    
posta Enigmatic Cipher 15.08.2016 - 20:10
fonte

2 risposte

10

Sfondo

Tale messaggio proviene dall'intestazione di base che ha ogni eseguibile di Windows (formato PE). Il messaggio (e il codice che lo visualizza) è tecnicamente modificabile, ma tutti i compilatori sembrano emettere solo codice che visualizza la stessa stringa e quindi esce. È un codice eseguibile a 16 bit (come un file DOS .COM ), destinato a essere visualizzato quando si tenta di eseguire il programma su MS-DOS o sistemi pre-Windows simili. Il programma di caricamento di Windows di solito lo ignora.

Spiegazione

Tuttavia, c'è un caso in cui Windows potrebbe visualizzare quel messaggio: quando si tenta di eseguire un PE compilato per una versione di Windows più avanzata rispetto a quella che si sta utilizzando, specialmente se il codice del programma principale è per un può supportare una diversa architettura della CPU rispetto a quella del sistema operativo. (Questo è simile, ad esempio, al tentativo di eseguire il codice Win32 su DOS a 16 bit.) Da una GUI, si otterrebbe un errore pop-up, ma nella riga di comando, si potrebbe semplicemente ottenere quel messaggio.

Il candidato ovvio qui è che stai cercando di eseguire codice sul (orribilmente obsoleto) Windows XP, e dici che stai usando "i686- w64 -mingw32-gcc". Se stai compilando i binari a 64 bit per Windows XP, è estremamente probabile che non funzionino; mentre una build di 64 bit di XP esiste tecnicamente (in realtà è una versione diversa del kernel, 5.2 vs 5.1, ma è marchiata come XP), non è mai stata ampiamente utilizzata; la stragrande maggioranza delle scatole XP sono solo a 32 bit. Se si desidera un controllo rapido per 32 bit rispetto a 64 bit dalla riga di comando, verificare la presenza di una directory \Windows\SysWOW64 (che contiene binari di sistema a 32 bit su macchine a 64 bit); se non esiste, stai utilizzando un sistema operativo a 32 bit.

Raccomandazione

  • A meno che tu A abbia bisogno di 64-bit per qualcosa, e B) sappia che il tuo obiettivo è 64-bit, usa solo payload a 32-bit.
  • Assicurati che il tuo codice e il compilatore abbiano come target XP (Vista e in seguito hanno aggiunto un sacco di nuove API che impediranno a un programma che li utilizza di girare su XP).
  • Considerare la rotazione di una VM XP per verificare se i payload vengono eseguiti localmente prima di provarli sul computer di destinazione.
risposta data 16.08.2016 - 01:55
fonte
4

Assicurati di aver consegnato il payload correttamente, ho avuto un problema simile durante il trasferimento di accesschk.exe via ftp. FTP consente il trasferimento in modalità ascii e binaria, se lo si trasferisce in modalità binaria dovrebbe funzionare.

La modalità binaria trasferisce i file, bit per bit, così come sono sul server FTP. La modalità Ascii, tuttavia, scaricherà direttamente il testo. Puoi digitare ascii o binario per passare da un tipo all'altro.

Per fare ciò, connettiti al servizio ftp e digita "binary", dovresti ottenere una risposta dicendo "200 Type set to I"

inserisci di nuovo il file ed esegui l'eseguibile.

    
risposta data 05.02.2018 - 12:40
fonte

Leggi altre domande sui tag