per Àlex Castán Salinas
acastan@xtec.net
*--------------------* | | | El teu ordinador | | és mort... | | i abans estava viu | | _______ | | |.-----.| | | ||x . x|| | | ||_.-._|| | | `--)-(--' | | __[=== o]___ | | |:::::::::::|\ | | `-=========-'() | | | | No hauries d'haver | | instal·lat : | | | | -= M$'Windows =- | *--------------------*
Afecta a: Totes les versions de Windows.
No afecta a: -
Aquest text no és més que una traducció al català. L'original en anglès es troba constantment actualitzat a http://www.tlsecurity.net/auto.html.
Aquest text no tracta una vulnerabilitat. És un llistat de totes les maneres conegudes d'iniciar automàticament l'execució d'un programa als sistemes operatius Windows de Microsoft. Aquests mètodes es poden emprar per intentar iniciar programes de manera amagada a l'usuari.
(Nota: a tots els exemples suposo que Windows està instal·lat al directori c:\windows, encara que a Windows NT acostuma a estar instal·lat a c:\winnt. En realitat es pot escollir el directori de la instal·lació, que queda guardat a la variable d'entorn %windir%.)
És un fitxer batch del MS-DOS que s'executa en arrencar el sistema, després de carregar els controladors de dispositiu indicats a config.sys i de carregar l'intèrpret de comandes command.com.
És un fitxer batch poc usual que s'utilitza per copiar i esborrar fitxers, carregar programes residents de DOS a memòria de Windows, etc.
A Windows 3.0 (i tots els posteriors), s'executen tots els fitxers que apareixen al fitxer win.ini, a la clau [windows], amb les etiquetes 'load' o 'run':
[windows]
load=file.exe
run=file.exe
A Windows 3.0 (i tots els posteriors), s'executen tots els fitxers que apareixen al fitxer system.ini, a la clau [boot], amb la etiqueta 'shell':
[boot]
Shell=Explorer.exe fitxer.exe
És un fitxer que s'utilitza per copiar i esborrar fitxers, normalment quan es reinicia el sistema després d'una instal·lació o desinstal·lació de software. Quan en arrencar Windows troba aquest fitxer, l'executa i després l'esborra.
Per exemple, esborrem el fitxer notepad.exe enviant-lo a NUL:
[Rename]
NUL=c:\windows\notepad.exe
Ho creieu o no, la següent clau del registre inicia un programa abans que s'iniciï la sessió i que comenci la càrrega de les claus Run... (veure següent punt) del registre:
HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed Components\KeyName
StubPath=C:\Directori\NomFitxer.exe
En iniciar una nova sessió s'executen tots els programes que apareixen a les claus del registre:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run...]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run...]
El format és:
- Per executar una funció d'una llibreria: "Rundll32.exe Nom_Dll,Nom_Funcio"
- Per executar un programa: "Nom_programa parametres"
Les diferents claus són:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
"qualsevol_nom"="c:\directori\programa.exe"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]
"qualsevol_nom"="c:\directori\programa.exe"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx]
"qualsevol_nom"="c:\directori\programa.exe"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices]
"qualsevol_nom"="c:\directori\programa.exe"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
"qualsevol_nom"="c:\directori\programa.exe"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"qualsevol_nom"="c:\directori\programa.exe"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
"qualsevol_nom"="c:\directori\programa.exe"
El funcionament i format de la clau RunOnceEx, el trobareu explicat a:
http://support.microsoft.com/default.aspx?scid=232509
És de tots conegut que al menú inici (Barra de tasques -> Inici -> Programes -> Inici) hi ha accessos directes als programes que s'executaran un cop entrem a una nova sessió de Windows. Aquest menú d'inici correspon al directori:
- Windows 9x i Me Anglès: C:\windows\start menu\programs\startup
- Windows 9x i Me Castellà: C:\windows\menú inicio\programas\inicio
- Windows NT Anglès: C:\winnt\profiles\nom usuari\start menu\programs\startup
- Windows NT Castellà: C:\winnt\profiles\nom usuari\menú inicio\programas\inicio
El que no tothom sap és que en realitat aquest directori ve escollit per una clau del registre, de tal manera que si modifiquem la clau, s'executaran tots els programes que guardem al directori escollit per nosaltres. Les claus del registre són:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
Startup="C:\windows\menú inicio\programas\inicio"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
Startup="C:\windows\menú inicio\programas\inicio"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Shell Folders]
"Common Startup"="C:\windows\menú inicio\all users\programas\inicio"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\User Shell Folders]
"Common Startup"="C:\windows\menú inicio\programas\inicio"
L'explorador de Windows ens permet visualitzar tant l'escriptori amb la seva barra de tasques i les diferents finestres, com navegar de manera visual per les diferents carpetes de Windows i explorar els fitxers que contenen.
A Windows 95, 98 i ME, l'explorador de Windows s'inicia consultant una entrada al fitxer system.ini:
[boot]
shell=Explorer.exe
A Windows NT 4.0 i Windows 2000, l'explorador de Windows s'inicia consultant l'entrada del registre [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell], que per defecte conté el valor Explorer.exe.
Com podeu comprovar als dos casos, aquesta línia no conté informació del directori on es troba el fitxer, així que si existeix el fitxer c:\explorer.exe, aquest s'iniciarà abans que l'autèntic c:\windows\explorer.exe o c:\winnt\explorer.exe o %windir%\explorer.exe.
El problema és que quan s'utilitza un camí relatiu per cridar a un executable i no un camí absolut, Windows cerca l'executable en aquest ordre:
- El directori actual.
- Si no ho ha trobat, cerca als diferents directoris especificats a la clau del registre [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path], en l'ordre que estan especificats.
- Si no ho ha trobat, cerca als diferents directoris especificats a la clau del registre [HKEY_CURRENT_USER\Environment\Path], en l'ordre que estan especificats.
Així, un troià pot instal·lar-se al fitxer c:\explorer.exe, que s'executa en iniciar la sessió, i després cridar al veritable explorador.
Altra opció és crear un fitxer executable corrupte, anomenat c:\explorer.exe, per tal que la sessió avorti cada cop que un usuari iniciï la sessió.
Per trobar més informació sobre el tema, o el pegat per Windows NT, consulteu:
- http://support.microsoft.com/default.aspx?scid=269049
- http://www.microsoft.com/technet/security/bulletin/MS00-052.mspx
- http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2000-0663
Existeixen unes claus del registre que indiquen quins programes s'utilitzaran per obrir determinats fitxers. En el cas d'obrir fitxers executables tenim:
[HKEY_CLASSES_ROOT\exefile\shell\open\command] @="%1" %*
[HKEY_CLASSES_ROOT\comfile\shell\open\command] @="%1" %*
[HKEY_CLASSES_ROOT\batfile\shell\open\command] @="%1" %*
[HKEY_CLASSES_ROOT\htafile\Shell\Open\Command] @="%1" %*
[HKEY_CLASSES_ROOT\piffile\shell\open\command] @="%1" %*
[HKEY_LOCAL_MACHINE\Software\CLASSES\batfile\shell\open\command] @="%1" %*
[HKEY_LOCAL_MACHINE\Software\CLASSES\comfile\shell\open\command] @="%1" %*
[HKEY_LOCAL_MACHINE\Software\CLASSES\exefile\shell\open\command] @="%1" %*
[HKEY_LOCAL_MACHINE\Software\CLASSES\htafile\Shell\Open\Command] @="%1" %*
[HKEY_LOCAL_MACHINE\Software\CLASSES\piffile\shell\open\command] @="%1" %*
Si canviem el valor de la clau de <"%1" %*> a <troia.exe "%1 %*">, llavors el fitxer troia.exe s'executarà cada cop que s'executi un fitxer amb extensió exe, pif, com, bat o hta. (Aquest mètode es emprat pel troià SubSeven i d'altres.)
La clau del registre [HKEY_CURRENT_USER\Software\Mirabilis\ICQ\Agent\Apps\] conté els programes a executar quan Icqnet detecta una connexió d'Internet:
[HKEY_CURRENT_USER\Software\Mirabilis\ICQ\Agent\Apps\prova]
"Path"="prova.exe"
"Startup"="c:\\prova"
"Parameters"=""
"Enable"="Yes"
Per amagar l'extensió d'un tipus determinat de fitxer a l'explorador, hem de buscar a la clau del registre [HKEY_LOCAL_MACHINE\Software\CLASSES\TipusFitxer], i escriure "NeverShowExt"="". Per tornar a visualitzar l'extensió després, bastarà amb esborrar de nou "NeverShowExt"="".
Per exemple, anem a amagar l'extensió SHS (ShellScrap) d'un fitxer, per tal que si anomenem aquest fitxer executable NoiaNua.jpg.shs, a l'explorador de Windows només apareixerà NoiaNua.jpg.
[HKEY_LOCAL_MACHINE\Software\CLASSES\ShellScrap] @="Scrap object"
"NeverShowExt"=""
Copyleft © Alejandro Castán Salinas
Es concedeix el permís per copiar, distribuir i/o modificar aquest document sota els termes de la llicència de documentació lliure GNU, versió 1.2 o qualsevol altra versió posterior publicada per la Free Software Foundation.
Podeu consultar dita llicència a http://www.gnu.org/copyleft/fdl.html.
El contingut d'aquest document pot canviar degut a ampliacions i a correccions enviades pels lectors. Trobareu sempre la ultima versió del document a http://www.xtec.net/~acastan/textos/index.html.