Computerbeveiliging - Hoe je bad guys buiten de deur houdt

Kingston dtsp USB-stick werkt niet na uitschakelen AutoRun

23-01-2009, 14:44 door Anoniem, 10 reacties
Zoals jullie allemaal weten, is de <a href="http://www.security.nl/tag/conficker" target="_blank">conficker worm</a> behoorlijk actief. Een van de manieren om dit type worm tegen te houden is het uitschakelen van autorun, zoals <a href="http://www.us-cert.gov/cas/techalerts/TA09-020A.html" target="_blank">geadviseerd</a> door US-CERT. Dat kan op de Microsoft manier, die niet werkt... behalve met een non-critical update en andere reg tweakings zoals beschreven op http://support.microsoft.com/kb/953252 . US-CERT raadt aan om Autorun uit te schakelen door Windows te vertellen dat Autorun niet bestaat:

REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf]
@="@SYS:DoesNotExist"

Om te voorkomen dat data te makkelijk op straat komt (defensie?) mogen hier alleen geencrypte usb sticks gebruikt worden. De meeste zijn van kingston, type DTSP.
helaas werkt de USB stick van Kingston nu niet meer. deze heeft twee volumes, waarbij op de eerste een executable staat waarnaar in de autorun.inf verwezen wordt. deze executable roept een decryptieprogramma aan die om het versleutelingswachtwoord voor het tweede volume vraagt.

Op het moment dat autorun is uitgeschakeld, start het tweede programma niet meer op en komt er een time-out. Het decryptieprogramma staat -vermoed ik- in een versleuteld zipbestand, waarin je wel kunt browsen, maar niets uit kunt halen.

uiteraard heb ik dit ook gemeld aan Kingston, maar hun eerste reactie was als volgt:

Dear (.... )
I would like to help you further with your issue. The DTSP/1GB needs the AutoRun function to launch the Program.
(...)
uiteraard heb ik gereageerd met verwijzingen naar enkele relevante artikelen.

Iemand een idee voor een goede oplossing?
(truecrypt werkt prima als encryptie, maar ik vind truecrypt niet makkelijk genoeg voor alle gebruikers. Bovendien wil ik de huidige sticks niet weggooien)
Reacties (10)
23-01-2009, 15:31 door SharkWare
Kun je hier een copy paste van de Autorun.ini (van de stick) zetten?
Alles wat dat bestand doet moet toch als user ook mogelijk zijn?
23-01-2009, 15:35 door Anoniem
Idd... de autorun doet normaliter niets anders dan verwijzen naar een executable die opgestart moet worden.
Als je die executable dubbelklikt (vaak wel hidden aanwezig, net als de autorun)
dan moet eea gewoon starten.
23-01-2009, 16:12 door Anoniem
Je schrijft dat er in de autorun verwezen wordt naar de executable die het decryptieprogje start.
Lijkt me inderdaad dat je op de executable moet klikken om het decrypt-progje te starten.
En daarmee dus de eerste autorun omzeild.

Aangezien dat niet werkt denk ik dat de situatie als volgt is:
Indien je de executable (op Volume1) opent start je het decryptie progje wat vervolgens het wachtwoord wil checken aan de hand van hetgeen er op Volume 2 staat en dan ook bijv. een andere ge-encrypte autorun.ini wil opstarten (op Volume 2) om de boel aan het werken te krijgen.

Hier kan je denk ik wel achter komen door de tweak tijdelijk ongedaan te maken en te kijken wat er allemaal in de ge-encrypte zip-file aanwezig is.(voor zover dat al kan - leve closed source)

Leuk probleem inderdaad.
23-01-2009, 16:23 door Anoniem
[AutoRun]
open=DTSP_Launcher.exe
icon=DTSP_Launcher.exe,0

[AppConfig]
firmware=S2

(einde autorun.ini)
DTSP_Launcher.exe laat enkel een splash screen zien; met autorun enabled start deze vermoedelijk een andere applicatie op die om het wachtwoord vraagt. zoals ik schreef, verwacht ik dat die in de zip zit.

inhoud disk:
DTSecure_Privacy_User_s_Manual.pdf
autorun.inf
dtsp_launcher.exe
exmp.zip (alleen browsen, voor extract heb je een wachtwoord nodig. berg aan dll's en exmpsrv.exe + andere bestandjes)
exmplauncherdll.dll
<DIR> support (met splashscreenlauncher.exe)
5 bestand(en) 6.372.790 bytes
23-01-2009, 16:40 door Bitwiper
Ik raad je toch aan om voor de "KB953252" methode te gaan (voor details zie [url=http://www.security.nl/artikel/26322/1/Microsoft_schuldig_aan_verspreiden_wormen_via_XP_netwerkshares.html]mijn artikel van dinsdag[/url]). In elk geval voorkom je daarmee het verspreiden van malware via netwerk-shares.

Als de eerste partitie CDFS geformatteerd is (in elk geval bij U3 sticks zou dit het geval zijn) dan moet autorun daarop gewoon werken als je NoDriveTypeAutorun op 0x95 zet.

Als de eerste partitie FAT (of NTFS) is dan zou je truuks kunnen overwegen die ervoor zorgen dat alleen Autorun.inf bestanden op USB-sticks worden uitgevoerd die aan bepaalde voorwaarden voldoen. Kijk eens naar [url=http://autorun.synthasite.com/]Dan McCloy's Autorun Reference Guide[/url] (N.b. de term EDDC is iets dat Dan McCloy zelf verzonnen heeft). Zijn tool [url=http://autorun.synthasite.com/AutoRunGuard.php]AutoRunGuard[/url] kan wellicht helpen (maar ik heb dit niet uitgebreid bestudeerd).

Dan McCloy verwijst ook naar de [url=http://blog.didierstevens.com/programs/usbvirusscan/]blog van Didier Stevens[/url] (die NL spreekt en wel eens wat op security.nl gepost heeft), en tevens naar een [url=http://www.uwe-sieber.de/usbdlm_e.html]USB drive-letter manager[/url] van Uwe Sieber (niet gratis voor commercieel gebruik), dat wel eens behulpzaam zou kunnen zijn voor wat jij wilt.

Laat even horen wat voor oplossing je uiteindelijk gebruikt en waarom!
23-01-2009, 16:59 door Anoniem
update: met procesexplorer even gekeken, dstp_launcher.exe start splashscreen.exe en
en pakt de zip uit in <profile directory>\Local Settings\Temp\{random}\{random}\V2SubFolder (die dan te kopieren is)
om exmpsrv.exe te starten. normaal verdwijnt splashscreen.exe en blijft exmpsrv.exe actief met de vraag om een wachtwoord.

exmpsrv.exe los starten geeft de melding "no device serial number. The application cannot be run directly"
er staat een logbestand, dat mij geen informatie geeft:

logbestandjes werkend en niet-werkend
werkend (autorun enabled):
2009-01-23 16:30:47,359 [Info] [Category: Startup] *********************************
{Support Info: ExmpSrv.cpp:454 [CExmpSrvApp::InitInstance] [ExmpSrv] #=624 le=126 }
2009-01-23 16:30:47,359 [Info] [Category: Startup] CExmpSrvApp::InitInstance - Application started {Support Info: ExmpSrv.cpp:455[CExmpSrvApp::InitInstance][ExmpSrv] #=624 }
2009-01-23 16:30:47,484 [Info] [Category: Startup] ExmpSrv OPENED MUTEX E {Support Info: ExmpSrv.cpp:506[CExmpSrvApp::InitInstance][ExmpSrv] #=624 }
2009-01-23 16:30:47,484 [Info] [Category: Drive remaping] RemapDrivesIfNeeded: Calling the remap function {Support Info: ExmpSrv.cpp:2919 [CExmpSrvApp::RemapDrivesIfNeeded] [ExmpSrv] #=624 le=122 }
2009-01-23 16:30:47,531 [Info] [Category: Drive remaping] RemapDrivesIfNeeded: Remaped successfully, removable drive letter: F {Support Info: ExmpSrv.cpp:2970[CExmpSrvApp::RemapDrivesIfNeeded][ExmpSrv] #=624 }
2009-01-23 16:30:47,531 [Info] [Category: Device SDK] Set removable drive letter - F:\ {Support Info: ExmpSdk.cpp:119[exmpsdk::SetRemovableDriveLetter][PluginSDK] #=624 }
2009-01-23 16:30:47,984 [Info] [Category: Startup] ***************************************************** {Support Info: ExmpSrv.cpp:954 [CExmpSrvApp::StartApplication] [ExmpSrv] #=624 le=2 }
2009-01-23 16:30:47,984 [Info] [Category: Startup] ***************************************************** {Support Info: ExmpSrv.cpp:955[CExmpSrvApp::StartApplication][ExmpSrv] #=624 }
2009-01-23 16:30:47,984 [Info] [Category: Startup] ***************************************************** {Support Info: ExmpSrv.cpp:956[CExmpSrvApp::StartApplication][ExmpSrv] #=624 }
2009-01-23 16:30:47,984 [Info] [Category: Startup] ***************************************************** {Support Info: ExmpSrv.cpp:957[CExmpSrvApp::StartApplication][ExmpSrv] #=624 }
2009-01-23 16:30:47,984 [Info] [Category: Startup] Starting Exmp... {Support Info: ExmpSrv.cpp:958[CExmpSrvApp::StartApplication][ExmpSrv] #=624 }
2009-01-23 16:30:47,984 [Info] [Category: Startup] The product version is 2.0.3.40 {Support Info: ExmpSrv.cpp:978[CExmpSrvApp::StartApplication][ExmpSrv] #=624 }
2009-01-23 16:30:48,078 [Warning] [Category: Startup] Clean requests were not done at last activation {Support Info: ExmpSrv.cpp:984 [CExmpSrvApp::StartApplication] [ExmpSrv] #=624 le=2 }
2009-01-23 16:30:48,109 [Info] [Category: Startup] DTSecure Privacy Started {Support Info: ExmpSrv.cpp:1027 [CExmpSrvApp::StartApplication] [ExmpSrv] #=624 le=122 }
2009-01-23 16:30:48,218 [Info] [Category: Startup] Disable autorun = 0, autoplay not canceleds {Support Info: ExmpSrv.cpp:892 [CExmpSrvApp::RequestCancelAutoplay] [ExmpSrv] #=624 le=122 }
2009-01-23 16:30:48,265 [Info] [Category: Device cookies] Exmp is admininistartor {Support Info: ExmpSrv.cpp:2178[CExmpSrvApp::HandleConfigurationCookie][ExmpSrv] #=624 }
2009-01-23 16:30:48,281 [Info] [Category: ZClient] PluginZClient: Start plugin {Support Info: PluginZClient.cpp:159[CPluginZClient::CPluginZClient][PluginZClient] #=624 }
2009-01-23 16:30:48,328 [Error] [Category: Authentication] Authenticate : Failed to CoCreateInstance ZHostClientAuth {Support Info: PluginZClient.cpp:639 [CPluginZClient::HostConnect] [PluginZClient] #=624 le=1008 }
2009-01-23 16:30:48,343 [Info] [Category: Server Connection] Unmanaged System - Set EXMP.General.CookiesTimeStamp to 0 {Support Info: PluginZClient.cpp:196[CPluginZClient::CPluginZClient][PluginZClient] #=624 }
2009-01-23 16:30:48,343 [Info] [Category: Device cookies] Device is not managed and host client not isntalled/verified {Support Info: PluginZClient.cpp:203[CPluginZClient::CPluginZClient][PluginZClient] #=624 }


niet werkend (autorun disabled):
2009-01-23 16:46:03,875 [Info] [Category: Startup] *********************************
{Support Info: ExmpSrv.cpp:454[CExmpSrvApp::InitInstance][ExmpSrv] #=1372 }

2009-01-23 16:46:03,875 [Info] [Category: Startup] CExmpSrvApp::InitInstance - Application started {Support Info: ExmpSrv.cpp:455[CExmpSrvApp::InitInstance][ExmpSrv] #=1372 }

2009-01-23 16:46:03,890 [Info] [Category: Startup] ExmpSrv OPENED MUTEX E {Support Info: ExmpSrv.cpp:506[CExmpSrvApp::InitInstance][ExmpSrv] #=1372 }

2009-01-23 16:46:03,890 [Info] [Category: Drive remaping] RemapDrivesIfNeeded: Calling the remap function {Support Info: ExmpSrv.cpp:2919 [CExmpSrvApp::RemapDrivesIfNeeded] [ExmpSrv] #=1372 le=122 }

2009-01-23 16:46:03,953 [Info] [Category: Drive remaping] RemapDrivesIfNeeded: Remaped successfully, removable drive letter: F {Support Info: ExmpSrv.cpp:2970[CExmpSrvApp::RemapDrivesIfNeeded][ExmpSrv] #=1372 }

2009-01-23 16:46:03,953 [Info] [Category: Device SDK] Set removable drive letter - F:\ {Support Info: ExmpSdk.cpp:119[exmpsdk::SetRemovableDriveLetter][PluginSDK] #=1372 }

2009-01-23 16:46:04,250 [Info] [Category: Startup] ***************************************************** {Support Info: ExmpSrv.cpp:954 [CExmpSrvApp::StartApplication] [ExmpSrv] #=1372 le=2 }

2009-01-23 16:46:04,250 [Info] [Category: Startup] ***************************************************** {Support Info: ExmpSrv.cpp:955[CExmpSrvApp::StartApplication][ExmpSrv] #=1372 }

2009-01-23 16:46:04,250 [Info] [Category: Startup] ***************************************************** {Support Info: ExmpSrv.cpp:956[CExmpSrvApp::StartApplication][ExmpSrv] #=1372 }

2009-01-23 16:46:04,250 [Info] [Category: Startup] ***************************************************** {Support Info: ExmpSrv.cpp:957[CExmpSrvApp::StartApplication][ExmpSrv] #=1372 }

2009-01-23 16:46:04,250 [Info] [Category: Startup] Starting Exmp... {Support Info: ExmpSrv.cpp:958[CExmpSrvApp::StartApplication][ExmpSrv] #=1372 }

2009-01-23 16:46:04,265 [Info] [Category: Startup] The product version is 2.0.3.40 {Support Info: ExmpSrv.cpp:978[CExmpSrvApp::StartApplication][ExmpSrv] #=1372 }

2009-01-23 16:46:04,265 [Warning] [Category: Startup] Clean requests were not done at last activation {Support Info: ExmpSrv.cpp:984 [CExmpSrvApp::StartApplication] [ExmpSrv] #=1372 le=2 }

2009-01-23 16:46:04,265 [Info] [Category: T5 SDK] IsConnected function START, initialized:0, status:300 {Support Info: XKeyControl.cpp:514 [CT5XKeyControl::IsConnected] [ExmpSrv] #=1372 le=2 }

2009-01-23 16:47:04,265 [Info] [Category: T5 SDK] IsConnected function END, initialized:0, status:300 {Support Info: XKeyControl.cpp:541[CT5XKeyControl::IsConnected][ExmpSrv] #=1372 }

2009-01-23 16:47:04,265 [Error] [Category: Startup] Device didn't connect for 30 seconds. {Support Info: ExmpSrv.cpp:1423[CExmpSrvApp::InitializeDokSdk][ExmpSrv] #=1372 }


je ziet hier een time-out van exact één minuut
23-01-2009, 23:12 door Bitwiper
Door Anoniem[AutoRun]
open=DTSP_Launcher.exe
icon=DTSP_Launcher.exe,0

[AppConfig]
firmware=S2
Die laatste twee regels hebben niets met Autorun te maken, maar zijn waarschijnlijk informatie voor ofwel dstp_launcher.exe of exmpsrv.exe. Hoogstwaarschijnlijk gebruikt die app de Win API functie [url=http://msdn.microsoft.com/en-us/library/ms724353(VS.85).aspx]GetPrivateProfileString[/url] om zelf gegevens uit Autorun.inf te lezen. En, zoals je in die [url=http://msdn.microsoft.com/en-us/library/ms724353(VS.85).aspx]GetPrivateProfileString[/url] documentatie kunt lezen, zal daarbij gekeken worden of
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf bestaat, en zo ja, de gegevens op de aangegeven plaats uit de registry i.p.v. uit de betreffende file lezen.

De hele truuk van Nick Brown (welke in eerste instantie door [url=http://www.us-cert.gov/cas/techalerts/TA09-020A.html]US-CERT[/url] is overgenomen - maar lees ook de Update sectie onderaan dat advies) bestaat uit het feit dat de shell (Windows Explorer) voor de gek gehouden wordt door te zeggen dat Autorun.inf gegevens uit de registry gelezen kunnen worden, en wel op de plaats "@SYS:DoesNotExist".

Ondertussen heb ik wat gegoogled en op meerdere plaatsen gezien dat de Kingston DTS en DTSP USB-sticks inderdaad met zowel een (read-only) CDFS als met een beschrijfbare (FAT32) datapartitie werken. Nogmaals mijn advies: gebruik in deze situatie de "KB953252" methode (zie [url=http://www.security.nl/artikel/26322/1/Microsoft_schuldig_aan_verspreiden_wormen_via_XP_netwerkshares.html]mijn artikel van dinsdag[/url]).

Een van de manieren om dit type worm tegen te houden is het uitschakelen van autorun, zoals [url=http://www.us-cert.gov/cas/techalerts/TA09-020A.html]geadviseerd[/url] door US-CERT. Dat kan op de Microsoft manier, die niet werkt... behalve met een non-critical update en andere reg tweakings zoals beschreven op http://support.microsoft.com/kb/953252 . US-CERT raadt aan om Autorun uit te schakelen door Windows te vertellen dat Autorun niet bestaat:

REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf]
@="@SYS:DoesNotExist"
Nogmaals, US-Cert heeft haar advies bijgesteld, en met die "reg tweakings" valt het ook wel mee: dat klan prima middels een policy (die wijzigt dezelfde NoDriveTypeAutorun registry value). Zie "Groepsbeleid-instellingen gebruiken om alle Autorun-functies uit te schakelen" in [url=http://support.microsoft.com/?scid=kb%3Bnl%3B953252&x=5&y=15]KB953252 - NL[/url] (of zoek naar "How to use Group Policy settings to disable all Autorun feature" in [url=http://support.microsoft.com/kb/953252]KB953252[/url]).

Te zien op [url=http://acpizza.livejournal.com/554753.html]deze page[/url] is dat je met het uitzetten van "Autoplay" in de policy editor "autoplay" op "Music CD's" niet uitzet, en zoals de auteur vermeldt wordt daarmee de Autorun.inf op een SanDisk Cruzer (vermoedelijk dus ook met CDFS partitie) toch uitgevoerd. Kortom, ik vermoed dat dit voor jouw Kingston sticks ook zal werken.
25-01-2009, 09:19 door Anoniem
maandag even proberen, bedankt voor de hulp
26-01-2009, 10:54 door Anoniem
als volgt opgelost:
het eerste gedeelte zet de autorun instellingen op 0x9d, het tweede gedeelte verwijdert de eerder registersleutel. De kingston stick werkt weer, terwijl van een normale stick autorun niet wordt uitgevoert.

0x01 onbekend (*)
0x04 verwisselbaar (*)
0x08 vast
0x10 netwerk (*)
0x80 onbekend (*)
====
0x9d
(de met (*) gemarkeerde meldingen zijn de standaardwaarde van MS XP sp3, hieraan heb ik ook de vaste stations toegevoegd en opgeteld in hex



REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
"HonorAutorunSetting "=dword:00000001
"NoDriveTypeAutoRun "=dword:0000009d

[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\autorun.inf]
26-01-2009, 13:13 door Bitwiper
Goed te horen dat dit is opgelost!

0x9D is inderdaad een prima waarde, t.o.v. 0x95 voorkom je ook dat Autorun.inf op partities van vaste harde schijven wordt uitgevoerd.

Toch even voor de zekerheid, voor het geval anderen jouw advies overnemen: e.e.a. werk alleen bij XP, W2K en W2K3 als je de jsuite patch zoals vermeld onder [url=http://support.microsoft.com/kb/953252]KB953252[/url] hebt geïnstalleerd (overigens is het dan niet noodzakelijk om "HonorAutorunSetting" op 1 te zetten, maar kwaad kan dit niet).

Voor de mensen die de betekenis van de onderste regel van jouw REGEDIT script niet kennen: door het minteken na de openende bakhaak geef je aan dat de betreffende registry-key moet worden verwijderd (die door de patchmethode van [url=http://nick.brown.free.fr/blog/2007/10/memory-stick-worms.html]Nick Brown[/url] en [url=http://www.us-cert.gov/cas/techalerts/TA09-020A.html]US-CERT[/url] kan zijn toegevoegd).

Conclusie: de patchmethode van [url=http://nick.brown.free.fr/blog/2007/10/memory-stick-worms.html]Nick Brown[/url] is zeerk krachtig en maakt korte metten met alle uitvoermogelijkheden van Autorun.inf files. Dat levert een probleem op bij Kingston DTSP USB-sticks omdat die, naast echte Autorun informatie, ook andere gegevens in de Autorun.inf file schrijven; doordat dit bestand niet meer gelezen kan worden door de Kingston software "weet" die software niet welk type firmware in de stick aanwezig is en werkt niet meer. Door het toepassen van [url=http://support.microsoft.com/kb/953252]KB953252[/url] en het aanbrengen van een wijziging in het register ben je wat minder goed beschermd dan met Nick Brown's truuk, maar dan werken de Kingston encryptie-USB-sticks in elk geval wel.
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.