|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 | |
|
Bannato
Iscritto dal: Oct 2004
Città: Roma
Messaggi: 124
|
Re: Grazie
Quote:
vuoi il codice C Win32 per abilitare il privilegio e spegnere il computer remoto? Eccotelo Codice:
#include <windows.h>
BOOL EnablePrivilege(LPCTSTR pszPrivilegeName) {
BOOL fRes = FALSE;
HANDLE hToken = NULL;
TOKEN_PRIVILEGES tp;
LUID luid;
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken)) {
if (LookupPrivilegeValue(NULL, pszPrivilegeName, &luid)) {
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), NULL, NULL)) {
fRes = TRUE;
}
}
CloseHandle(hToken);
}
return fRes;
}
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
if (EnablePrivilege(SE_SHUTDOWN_NAME) && EnablePrivilege(SE_REMOTE_SHUTDOWN_NAME)) {
if (InitiateSystemShutdown(TEXT("\\\\REMOTE"), NULL, 0, FALSE, FALSE)) {
return 0;
}
}
return -1;
}
Ultima modifica di 71103 : 06-02-2005 alle 23:32. |
|
|
|
|
|
|
#22 |
|
Member
Iscritto dal: Jan 2005
Messaggi: 44
|
Fammi Capire Matpez
matPez, non ho capito cosa dovrei fare io, quel programma che mi hai mandato serve per connettere due pc tramite ip nella stessa lan. Io cosa dovrei fare?Dovrei adattarlo per renderlo shutDown in remoto?
|
|
|
|
|
|
#23 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Bhe ma nn era l'idea che ti ho dato in partenza? nn ci siamo capiti bene all'ora
Ti avevo detto che siccome lo shotdown è presente solo nei O.S. WinXP e solo se hai i diritti per farlo da ogni pc (cioè se sei sotto un dominio per intenderci), secondo me era + bello e + utile fare un programma che che connettendosi ai pc faceva lo shotdown del computer in questione! Forse nn sono stato chiaro io, ma pensavo che quest'idea ti piacesse, infatti mi hai fatto anche mandare via email il codice per provare a connetterti ad un altro computer tramite VB6 Magari poi visto le altre risposte ai cambiato idea 1) Non c'è bisogno che setti i super diritti di amministrazione su tutti i pc; 2) Creandoti un interfaccia un po' furba puoi decidere sempre se spegnere tutti i pc o solo alcuni; 3) Essendo lo shoutdown un comando di WinXP, tu potresti adattare il tuo programma a qlc tipo di rete con pc di sistemi microsoft (dal win95 in su); Detti questi punti sta a te vedere cosa ti interessa fare, per lo sviluppo di quel programma ci vorrebbe mettiamo 2 orette per fare un bel lavoro Ciaoooooooooooooooo
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#24 |
|
Member
Iscritto dal: Jan 2005
Messaggi: 44
|
Non hai capito male
Maptez, in fatti la tua idea mi piaceve e mi piace, quello che non ho capito è stato il tuo penultimo post.
Cmq realizzero il codice al presto e ti faccio sapere |
|
|
|
|
|
#25 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
bhe dai ci saremo capiti male
Buon lavoro, se hai bisogno di una mano hiedi pure, o qui o in pvt
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#26 |
|
Bannato
Iscritto dal: Oct 2004
Città: Roma
Messaggi: 124
|
bah, a quanto pare il mio codice non gli è piaciuto...
|
|
|
|
|
|
#27 |
|
Member
Iscritto dal: Jan 2005
Messaggi: 44
|
shoutdown
Ciao 71103,
fammi capire bene come funziona il tuo codice. In ogni caso io lo cercavo in VB. Cmq fammi capirequestocodice e mi hai fornito da lo possibilità di spegnere in remoto? Se volessi usare i settaggi di XP come dovrei fare? |
|
|
|
|
|
#28 |
|
Bannato
Iscritto dal: Oct 2004
Città: Roma
Messaggi: 124
|
Scritto in C sembra chissà cosa, ma in realtà è semplicissimo: la funzione principale è la WinMain, che chiama due volte la EnablePrivilege e, in caso di successo, la InitiateSystemShutdown, che effettua lo shutdown di un computer remoto (in quel caso ho supposto che il pc remoto si chiamasse "\\REMOTE". La funzione EnablePrivilege ovviamente assicura che il privilegio il cui nome gli viene passato come parametro sia abilitato: la WinMain la chiama prima con SE_SHUTDOWN_NAME, necessario per effettuare uno shutdown in generale, e poi con SE_REMOTE_SHUTDOWN_NAME, necessario per lo shutdown di un computer remoto; se la EnablePrivilege non riesce ad abilitare uno dei due privilegi, restituisce FALSE, e la WinMain restituisce -1, altrimenti se tutto è "successful", il computer remoto viene spento e la WinMain restituisce 0.
Quel codice quindi è esattamente quello che avevi chiesto, colo che in C |
|
|
|
|
|
#29 |
|
Bannato
Iscritto dal: Oct 2004
Città: Roma
Messaggi: 124
|
Dimenticavo: gli unici due requisiti per far funzionare il prog. sono che entrambi i computers (quello locale e quello remoto) abbiano Windows (qualsiasi versione che supporti la InitiateSystemShutdown) e che tu sia loggato come administrator su quello locale (o che comunque tu abbia i privilegi da administrator).
Se invece tu volessi fare un programma locale che chiede a quello remoto di spegnere il pc remoto, allora dovresti essere loggato come administrator sul pc remoto anziché su quello locale (dovresti abilitare il privilegio SE_SHUTDOWN_NAME). PS: ma perché il programma lo volevi fare invisibile al TaskManager? |
|
|
|
|
|
#30 | |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Re: Altra curiosità
Quote:
Qui la cosa mi puzzicchia hahahaha Si cmq se puoi sia in task managrer sia nella barra delle applicazioni.. unica pecca è che il processo rimane sempre
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
|
#31 | |
|
Bannato
Iscritto dal: Oct 2004
Città: Roma
Messaggi: 124
|
Re: Re: Altra curiosità
Quote:
|
|
|
|
|
|
|
#32 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Magari esiste un modo per occultarlo (il processo) nel taskmanager di XP, ma se uno usa un programma un po' più sofisticato il processo lo trova
Se tu sostieni il contrario, sarebbe bello sapere il metodo per farlo... una cosa nuova in più
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#33 | |
|
Bannato
Iscritto dal: Oct 2004
Città: Roma
Messaggi: 124
|
Quote:
affinchè del codice venga eseguito su un computer chiaramente è necessario che stia in un processo, ma non è detto che si debba creare un processo a parte apposta per eseguire un qualche codice; il codice può essere introdotto clandestinamente in altri processi (in tal modo oltrettutto il codice è grado di girare nel contesto di sicurezza del processo nel quale si trova, che potrebbe anche essere l'utente speciale SYSTEM nel caso dei servizi In Windows esistono svariati modi per introdurre codice "clandestinamente" in altri processi, e spesso l'unico requisito è che l'utente corrente abbia i privilegi necessari per eseguire il debug delle applicazioni (vedere privilegio SE_DEBUG_NAME) e che tale privilegio ovviamente sia abilitato, ma come abbiamo visto qualche post fa, se un privilegio è presente, non è un problema abilitarlo. Un possibile sistema è quello di compilare il codice in questione in una DLL, e in qualche modo "obbligare" il processo target a caricare la DLL in questione; sui kernel NT-based non è un problema: si può facilmente ricorrere alla CreateRemoteThread passando la LoadLibrary come entry-point (guarda un po': il prototipo della ThreadProc coincide con quello della LoadLibrary, stesso numero di bytes per i parametri, stessa calling convention e stessa dimensione del risultato!!! Sembra quasi che Microsoft l'abbia fatto apposta! Inoltre, con opportuni software, è possibile ottenere una lista di tutte le immagini PE caricate all'interno di un processo (ne ho programmato uno giusto io qualche tempo fa, e lo uso tutt'ora per rasare virus 1) si procede sempre tramite la DLL, la quale quando riceve la notifica di caricamento all'interno del processo, alloca l'area di memoria, ci scrive il codice, crea il thread (se necessario), e fallisce il caricamento, in modo tale da essere subito scaricata dal processo; da quel momento la DLL può anche essere cancellata dal disco, ma il codice rimarrà in esecuzione fintanto che il processo target gira; se il processo target è un servizio, il codice rimane lì e gira coi privilegi dell'account SYSTEM fino a che non si resetta il servizio (cosa che in genere l'utente medio non fa/sa fare), oppure naturalmente fino al prossimo format. 2) senza procedere tramite la DLL, si crea un programma che alloca direttamente l'area di memoria con la funzione VirtualAllocEx nel processo target, scrive il codice clandestino con la WriteProcessMemory, e crea il thread remoto con la CreateRemoteThread; chiaramente il codice clandestino conterrà una ThreadProc, il cui indirizzo verrà passato come entry-point alla CreateRemoteThread. Ribadisco infine, che l'unico requisito a tutto questo è che l'utente corrente abbia i privilegi necessari per fare il debug delle applicazioni, ma aggiungo che anche senza questi privilegi è possibile comunque infiltrare codice, ma solo in alcuni processi, precisamente quelli creati dall'utente corrente, come ad es. explorer.exe, ma non è possibile infiltrarlo nei servizi (e allora si perde tutto il bello Un'ultima precisazione: nella maggior parte dei casi, per i sistemi Win9x, dove tutto questo spesso non è possibile, si ricorre alla semplicissima RegisterServiceProcess: i servizi infatti non vengono mostrati nei vecchi Task Manager. |
|
|
|
|
|
|
#34 |
|
Bannato
Iscritto dal: Oct 2004
Città: Roma
Messaggi: 124
|
PS: matpez, sai che la citazione che hai in firma è proprio vera?
|
|
|
|
|
|
#35 | |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Quote:
La mia firma è messa li apposta, perchè alla fine magari certe cose sembrano così complesse e difficili, invece poi sono delle caxxate, altre che sembrano risolvibili in 5 minuti, magari portano via intere giornate! PS: poi l'ha detta il mitico Albert...mica uno a caso
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
|
#36 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Non ho resistito a leggere il tuo spiegone
... davvero notevole, hai spiegato molto bene il concetto (al limite del regolamente heheheh hehehehe scusa se ho insistito nel dire in questo 3d di fare il programma.. magari ti sono sembrato che ti andavo contro.. ma a me piace molto fare programmi, e magari da un idea detta così, come quella di lanciare in comando dos, si può realizzare un programma più sofisticato (che esiste già di sicuro), ma il bello di farselo da soli sta proprio nel realizzare le idee
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#37 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
Tanto che ci sono colgo l'occasione per puntualizzare una cosa imprecisa che ho detto qualche post fa: ho detto che per fare lo shutdown di un computer locale servivano i privilegi da amministratore, in particolare SE_SHUTDOWN_NAME, ma è una cavolata, perché altrimenti vorrebbe dire che solo gli amministratori hanno la possibilità di spegnere il computer Sto dicendo questa cosa perché a questo punto forse a devilchan converrebbe lavorare sulla tua di idea (visto che invece con la mia bisogna essere loggati come admin in locale); entrambi i modi di lavorare hanno dei requisiti: il mio richiede i privilegi da admin, il tuo richiede l'installazione di un programma su un computer remoto. PS: sono sempre io, 71103, ma ho fatto un'altra registrazione perché l'account non funziona più, non so per quale motivo; non riesco più a postare, come se fossi stato bannato, ma non ne capisco il motivo, e poi così, senza nessun preavviso... mmmahhh!!! |
|
|
|
|
|
|
#38 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Ma sei stato bannato 71102 volte prima di venire su questo forum?
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#39 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
si
|
|
|
|
|
|
|
#40 |
|
Member
Iscritto dal: Jan 2005
Messaggi: 44
|
Veidamo un po
Ragazzi sembrate molto ma molti esperti.
Ora vi pongo un alta domanda a cui spero sappiate rispondermi. Sempre in VB sapreste cambiare le impostazioni delle opzioni cartelle?Per farvi capire meglio intendo quelle che appaiono quando aprite una cartella andate su strumenti\opzioni cartella\visualiazza\etc etc, tutte quelle opzioni sapete cambiarle costruendo un programma VB? Un altra cosa, se visualizzate tutti i file nascosti di sistema do Xp vedrete anche, in c:\ il file boot.ini, secondo voi se vine cancellato non parte xp oppure viene ricreato? |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:12.











... davvero notevole, hai spiegato molto bene il concetto (al limite del regolamente heheheh








