Van egy Fisotech 16 960H DVR-ünk aminek az IP alapú képességeivel nem vagyok teljesen megelégedve.
A webes felülete activeX-ben van megírva. 64 biten nem működik sem a webes sem a standalone kliens.
Elkezdtem revengelni a protokollt, h.264-et tol ki, amit az mplayer visz ügyesen átpipolva.
Más is csinált már ilyet egy másfajta DVR-hez:
http://tanidvr.sourceforge.net/
Ha már szívtam vele sokat akkor megcsinálnám normálisan mint a fenti programot.
Egy problémám van: a jelszó nem plaintextben utazik az authentikáció során a DVR felé, hanem valahogy enkódolva, amit nem ismerek.
Kipróbáltam 3 féle jelszóval amikre az alábbi hasheket küldte:
Jelszó 123456789:
80 c2 28 e7 47 96 f8 33 68 a9 12 c1 4a 93 eb ea
Jelszó 123456
96 ab f6 de 40 aa 36 44 d7 16 ea 49 82 73 c2 11
Jelszó 12345
fc ef bc 94 21 e8 7e 1e d7 16 ea 49 82 73 c2 11
Nem vagyok expert a szakmában, de hátha valaki ránézésre vágja, hogy milyen kódolás ez.
Ha van valami ötletetek esetleg, akár a kliensprogram revengelésére (valószínűleg .NET-ben írták, legalábbis .NET-es DLL-ek vannak a mappájában) akkor azt is szívesen veszem.
Köszi!
- 6323 megtekintés
Hozzászólások
Hossz alapjan md5nek tunik, lehet, hogy saltolva van valami fixxel.
--
|8]
- A hozzászóláshoz be kell jelentkezni
Ha .NET, ezzel nézz bele: https://www.jetbrains.com/decompiler/
- A hozzászóláshoz be kell jelentkezni
+1
Ha nincs kimondottan obfuszkálva, akkor meglepően könnyű kiolvasni a különféle algoritmusokat.
Továbbá még ez is egy lehetséges alternatíva: http://ilspy.net/
- A hozzászóláshoz be kell jelentkezni
Köszi mindkét linket, beszámolok mire jutok vele.
- A hozzászóláshoz be kell jelentkezni
Na a .NET-el mellélőttem. Van egy keygen.dll amiből többek közt az alábbi stringek kerültek elő:
D:\HoneyWell\RSDvrClient\Safe\Release\Keygen.pdb
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
A dotPeek szerint nem támogatott az ilSpy szerint pedig nem tartalmaz managed assemblyket.
Ez a pdb fájl, meg ez az assemblyinfos XML .NET-es cuccok felől rémlett, de úgy tűnik luftot rugtam vele.
- A hozzászóláshoz be kell jelentkezni
a két utolsó sor annyira hasonlít (hacsak nem téves), hogy ez nem lehet valamilyen 'professzionális' algoritmus
- A hozzászóláshoz be kell jelentkezni
Bizony elég nyanús, hogy inkább valamilyen karaktercserés trükk lesz, valamilyen alap sztringhez képest.
Mindenesetre elkezdeném - ha hagyja - azonos karakterekből álló jelszavakkal vallatni.
- A hozzászóláshoz be kell jelentkezni
Ahhoz nem kell feltétlenül karaktercserés, az LM hash-nél 7 karakter alatt ugyanígy megegyezne a felső fele:
12345 AEBD4DE384C7EC43 AAD3B435B51404EE
123456 44EFCE164AB921CA AAD3B435B51404EE
Szerk.: rosszul mondtam, 8 karakter alatt (a 7-es még az első felébe megy)
12345 AEBD4DE384C7EC43 AAD3B435B51404EE
123456 44EFCE164AB921CA AAD3B435B51404EE
1234567 0182BD0BD4444BF8 AAD3B435B51404EE
12345678 0182BD0BD4444BF8 36077A718CCDF409
76543218 9EE0D521C88B2C76 36077A718CCDF409
Szerk 2.: Rejtett subscribe, mert érdekel
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
Jogos - az LM is jó példa NevemTeve nem professzionális algoritmusára, még ha masszivabb is, mint a sufnis bitaritmetikázás.
- A hozzászóláshoz be kell jelentkezni
Az újabb hsz-ek fényében azt mondanám, hogy 64-bit a blokkméret, viszont akkor ez nem annyira hash, hanem... hanem bármiféle kódolás, ami 64-bitenként működik
- A hozzászóláshoz be kell jelentkezni
Ezeket is megadnád?
- 123457
- 123456780
- a legrövidebb valid jelszó?
Köszi!
--
Debian Linux rulez... :D
- A hozzászóláshoz be kell jelentkezni
Holnap megvallatom. 0 hosszú jelszót nem enged azt tudom mert azt már próbáltam.
- A hozzászóláshoz be kell jelentkezni
subs
- A hozzászóláshoz be kell jelentkezni
Első körben ha ezeket megadnád kódolva, az segítene:
@, @@, @@@, @@@@, @@@@@, @@@@@@, @@@@@@@, @@@@@@@@
A, AA, AAA, AAAA, AAAAA, AAAAAA, AAAAAAA, AAAAAAAA
BBBBBBBB, CCCCCCCC, BBBBCCCC, CCCCBBBB, BBCCBBCC, CCBBCCBB, BCBCBCBC, CBCBCBCB
- A hozzászóláshoz be kell jelentkezni
Holnap rápróbálok. Nem ígérem, hogy mindet végigpróbálom, mert csak képernyőbillentyűzeten lehet a gépen jelszót átütni, így kissé körülményes a próbálkozás.
- A hozzászóláshoz be kell jelentkezni
Ha ez csak egy hash es a DVR nem akarja visszakodolni, csak osszehasonlitani egy letarolt ertekkel, akkor nem mukodne az, hogy sajat kliensbol csinalsz egy jelszo modositast, ahol a regi hashnek bekuldod hardcodeolva a mostanit, ujnak meg amit akarsz (hosszra egyezot)?
- A hozzászóláshoz be kell jelentkezni
A desktop kliensben nem lehet jelszót változtatni, csak fizikailag hozzáférve egérrel képernyőbillentyűzeten.
Pontosabban az ActiveX-es webes UI-t még nem néztem részleteiben (az csak 32 bites Winen ment).
A standalone app egy lejelszavazott mdb fájlban (jelszót már levertem róla) tárolja a konfigot és a jelszó plaintextben tárolódik, így a próbálkozások kissé kényelmetlenek.
- A hozzászóláshoz be kell jelentkezni
Vallattam kicsit:
@:
56 5d 83 9f 09 70 59 6a d7 16 ea 49 82 73 c2 11
A:
2e dd 08 90 9a c3 3a 22 d7 16 ea 49 82 73 c2 11
AA:
65 4d cb 8d 78 ad 21 f0 d7 16 ea 49 82 73 c2 11
AAA:
94 a6 a3 8b 4f 35 19 ef d7 16 ea 49 82 73 c2 11
AAAAAAAA:
4a e4 45 1e 36 2b 54 bb d7 16 ea 49 82 73 c2 11
AAAAAAAAA:
4a e4 45 1e 36 2b 54 bb 2e dd 08 90 9a c3 3a 22
BBBBBBBB:
09 f3 e0 b9 06 e1 d4 57 d7 16 ea 49 82 73 c2 11
NevemTevének igaza van a 64-ről 64 bitre kódolással.
Annyi tűnt még fel, hogy az elkódolt tartalom 128 biten utazhat ugyanis a d7 16 ea 49 82 73 c2 11 sorozat még 2x ismétlődik ezek után.
- A hozzászóláshoz be kell jelentkezni
Az látszik, hogy 8 bájtból lesz 8 bájt. A blokkok feltehetően nincsenek egymásra befolyással (ECB mode). Már 1 bit változása is az inputban majdnem a bitek felét megváltoztatja az outputban. Tehát nem full béna.
Azt feltétezem, hogy a csupa 0 inputból lesz d7 16 ea 49 82 73 c2 11. Ebben pl. az az érdekes, hogy a legfelső bit felváltva 1 és 0. Még látni pár ilyen szabályszerűséget, ami miatt viszonylag egyszerűbb, XOR alapú vagy hasonló algoritmus a tippem.
Ebből még nem jöttem rá a megoldásra. Egyrészt ki lehet generálni rengeteg input-output párost, hátha több szabályszerűséget is észreveszünk, vagy akár ki lehet generálni az összes párost, 64 bit esetén ez nem olyan rengeteg. Vagy a DLL-t kell visszafejteni.
- A hozzászóláshoz be kell jelentkezni
Beüzemeltem az activeX-es felületet és azzal lehet jelszó váltani. A legjobb, hogy mindezt HTTP-n teszi, tehát lehet hegesztek össze valami toolt ami automatizáltan tudja átütni a jelszót meg megnyomkodni a streamet.
Egy dolog tűnt fel:
A DVR közvetlenül az autentikációs adatokat tartalmazó packet előtt küld egy XC012345 stringet tartalmazó packetet. (A DVR üzenetei vannak bentebb indentálva)
00000000 00 00 01 01 01 01 00 00 ff ff ff ff 00 00 00 00 ........ ........
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
00000000 00 00 01 01 01 01 00 00 ab 00 00 00 08 00 00 00 ........ ........
00000010 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
00000020 58 43 30 31 32 33 34 35 XC012345 # ez lett it gyanús
00000020 00 00 01 01 00 00 00 00 ff ff ff ff 4c 00 00 00 ........ ....L...
00000030 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
00000040 61 64 6d 69 6e 00 00 00 00 00 00 00 00 00 00 00 admin... ........
00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
00000060 fa d8 5d 0e 46 47 60 2c d7 16 ea 49 82 73 c2 11 ..].FG`, ...I.s.. # Ez a sor
00000070 d7 16 ea 49 82 73 c2 11 d7 16 ea 49 82 73 c2 11 ...I.s.. ...I.s.. # és ez tartalmazza a jelszót
00000080 00 00 00 00 fa d8 5d 0e 46 47 60 2c ......]. FG`,
00000028 00 00 01 01 00 00 00 00 ab 00 00 00 00 00 00 00 ........ ........
00000038 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
0000008C 00 00 01 01 06 00 00 00 ab 00 00 00 00 00 00 00 ........ ........
0000009C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
00000048 00 00 01 01 06 00 00 00 ab 00 00 00 00 00 00 00 ........ ........
00000058 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
Namost a jelszót erre átütve a
XC012345
fa d8 5d 0e 46 47 60 2c
Párt kapjuk. A jelszó tartalmától 2 bájtra pedig fixen ott van ez a sorozat (az alábbi dump az 12345 passworddel):
00000000 00 00 01 01 01 01 00 00 ff ff ff ff 00 00 00 00 ........ ........
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
00000000 00 00 01 01 01 01 00 00 bb 00 00 00 08 00 00 00 ........ ........
00000010 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
00000020 58 43 30 31 32 33 34 35 XC012345
00000020 00 00 01 01 00 00 00 00 ff ff ff ff 4c 00 00 00 ........ ....L...
00000030 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
00000040 61 64 6d 69 6e 00 00 00 00 00 00 00 00 00 00 00 admin... ........
00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
00000060 fc ef bc 94 21 e8 7e 1e d7 16 ea 49 82 73 c2 11 ....!.~. ...I.s.. # jelszó
00000070 d7 16 ea 49 82 73 c2 11 d7 16 ea 49 82 73 c2 11 ...I.s.. ...I.s.. # jelszó
00000080 00 00 00 00 fa d8 5d 0e 46 47 60 2c ......]. FG`,
00000028 00 00 01 01 00 00 00 00 bb 00 00 00 00 00 00 00 ........ ........
00000038 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
0000008C 00 00 01 01 06 00 00 00 bb 00 00 00 00 00 00 00 ........ ........
0000009C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
00000048 00 00 01 01 06 00 00 00 bb 00 00 00 00 00 00 00 ........ ........
00000058 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
000000AC 00 00 01 01 06 00 00 00 bb 00 00 00 00 00 00 00 ........ ........
000000BC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
00000068 00 00 01 01 06 00 00 00 bb 00 00 00 00 00 00 00 ........ ........
00000078 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
000000CC 00 00 01 01 01 00 00 00 bb 00 00 00 00 00 00 00 ........ ........
000000DC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
- A hozzászóláshoz be kell jelentkezni
Szerintem ez nem a kulcs, hanem egy challenge-response teszt, amit csak az tud megválaszolni, aki a jó kulccsal+algoritmussal kódolja a jelszót. A challenge-et ugyanúgy kódolja, ahogy a jelszót, ezért ismétlődik a kódolt rész. Biztonságilag nincs értelme, ha mindig ugyanaz a challenge, viszont arra jó, hogy kiszűri a hibásan működő kódoló algoritmust.
- A hozzászóláshoz be kell jelentkezni
Ha a szokasos kinai TVT az OEM, akkor ne szorakozz a visszafejtessel. Van hozza telnet/ssh backdoor (is), amin keresztul jelszot cserelhetsz.
- A hozzászóláshoz be kell jelentkezni
A felasználói jelszó megvan hozzá. A problémám onnan ered, hogy 64 bites Windowson az ActiveX-es néző nem megy, a kliensprogram meg fekete képet közvetít, illetve igényként felmerült az, hogy egy widgetszerű valamiben tolja a streameket felváltva. Linuxon pedig abszolút semmilyen lehetőség nincs. A stream TCP protokollon megy H.264-ben. A stream előtt van authentikáció ahol a jelszó elkódolva van kiküldve. Nem szeretnék jelszót belehardcodolni, illetve lehet más is hasznát venné ezért szeretném megcsinálni a jelszóenkódolást. Telnet ezen is nyitva van, de a jelszó/felhasználó nem azonos a felhasználói jelszóval.
- A hozzászóláshoz be kell jelentkezni
A jelszóhoz generálás kitalálásához szerintem kellene egy link az activex controlra vagy az alkalmazásra.
Tegnap nézegettem egy kicsit, a manualja alapján egy HiSilicon hi3531-n alapuló kínai csoda (megtaláltam az egyik olasz tesóját) de az androidos appja (TMEye) alapján nem tűnt úgy mintha jelszót kódolna.
Az egyik klónhoz amihez találtam firmware-t is van benne törölhetetlen "super" user is (legalábbis a dumpból úgy tűnik (UserIsSuperKey,I am super user!)
- A hozzászóláshoz be kell jelentkezni
A következő zip tartalmazza a CMS szoftvert illetve a feltelepített ActiveX-es okosságot. (A CMS felteszi azt is, csak ha valaki nem akar telepítgetni akkor így egyszerűbb lehet.)
https://dl.dropboxusercontent.com/u/4295670/DVR_pakk.zip
Az android app nagyon jó tipp, javat azért egyszerűbb revengelni.
Ez a vas Hisilicon HI3521 alapú, 16 csatornás, a PCB-n HI3521-DVR-354-V1.0 felirat. A UserIsSuperKey telneten nem jut be.
- A hozzászóláshoz be kell jelentkezni
A UserIsSuperKey telneten nem jut be.
Az lehet, de a firmware-be amit találtam benne van az /etc/passwd-e hardcodolva a root pass. (bár nekem eleve az furcsa volt, hogy az init elindítja a telnetd-t :)). A zip-et meg megnézem mindjárt.
- A hozzászóláshoz be kell jelentkezni
Ja, hogy a root pass a "UserIsSuperKey,I am super user!" string. Azt hittem csináltak egy UserIsSuperKey felhasználót és a másik fele a key. Majd lehet szétszedem és ha van soros és uboot prompt akkor tftp-n kiimádkozom belőle a rootfst és akkor lesz ehhez is backdoor.
- A hozzászóláshoz be kell jelentkezni
Nem az a két string részlet a "strings /home/root/lib/libusers.so" kimenetéből. :)
A root pass-t nem néztem (johnnal), csak, hogy ott van a firmware képbe az /etc/passwd alatt a root és a password hashe.
Szerk.: Komolytalan jelszó volt egy i5-ös 10 perc alatt végzett vele, ha gondolod átküldöm privátba, bár mivel más a gyártó kétlem, hogy ott is ugyanaz van beállítva.
- A hozzászóláshoz be kell jelentkezni
Ránéztem az activex controlra úgy tűnik vb.htm oldalt hívogat (google első találat, hogyan keressünk kamerákat az interneten google-val). De aztán jön egy kamera manuál ami úgy tűnik ugyanazt a szoftvert használja, mert a parameterek nevei is egyeznek az ocx-ben levőkkel, de az alapján csak basic http auth van:
- A hozzászóláshoz be kell jelentkezni
Igen a vb.htm-en keresztül megy az ActiveX-es cucc bejelentkezése, konfigkezelése. A h.264 stream viszont a 8670-es porton megy, és szerintem nem szabvány RTSP, legalábbis VLC-t nem tudtam rávenni, hogy megegye, illetve a stream előtti authentikációban van benne a csatornaválasztás is.
- A hozzászóláshoz be kell jelentkezni
Az eszköz tud egy QR kódot mutatni ami erre az APK-ra dob:
http://www.freeip.com/some_file/FreeIp.apk
Szétszedve úgy tűnik, hogy ez egy szerveren (http://heart.freeip.com ?) keresztül akarja a streamet áthúzni.
- A hozzászóláshoz be kell jelentkezni
16 darab 'A' betu 2 egyforma darabkat ad?
--
The Bible is the longest set of Terms & Conditions ever.
So many people agree with it without knowing why.
- A hozzászóláshoz be kell jelentkezni
16 karakteres jelszót nem tudok megadni :(.
Az ActiveX-es felület 8-at a fizikai 13-at enged.
A webeset esetleg tudnám bypassolni firebuggal mert a háttérben HTTP-t használ, de nem szeretném elhákolni (ki tudja nincs-e erősebb az ellenőrzés a bejelentkezésnél mint a jelszócserénél)
- A hozzászóláshoz be kell jelentkezni
gemnon-nak köszönhetően telneten bejutottam az eszközre.
Megszereztem a nagyjából mindent (http-t és streamet is) kiszolgáló binárist és kicsapattam belőle a stringeket (közte megtalálható az XC012345 challange response key is).
Vannak ilyen vicces stringek benne mint:
xorOnly = true
illetve valószínűleg valahogy tud mjpeg-et is, mert a multipart JPEG header is megtalálható benne.
Elindultam az androidos irányba is, de az zsákutcának tűnik egyelőre, mert az csak egy kliens a freeip.com-on keresztüli valószínűleg STUN alapú streamelésnek. Amit meg nem működik gondolom azért, mert a gépbe behardcodolt heart.freeip.org nem elérhető.
- A hozzászóláshoz be kell jelentkezni
Ha valakit esetleg érdekelne, a vas eladó lett:
https://hup.hu/node/165451
Sajnos nem jutottam a reveng végére: írtam egy "emulátort" amihez a gyári tool tud csatlakozni, illetve a gyári tool-ból megvan a dll ami az authentikációt intézi illetve csináltam egy wrappert a dll-hez ami tud végtelenülszer próbálkozni (van leaked SDK headerekkel hozzá).
A dll-t befűztem IDA-ba de az IDA és x86 ASM ismeretem gyér volt ahhoz, hogy rájöjjek, hogy konkrétan mit is csinál.
- A hozzászóláshoz be kell jelentkezni