Kysymys:
Haetaan salaus / koodauslogiikka dll: stä
leepfrog
2014-01-26 19:53:41 UTC
view on stackexchange narkive permalink

Yritän noutaa salauksen purkamis- / purkamislogiikan ohjelmasta. Valitettavasti minulla ei ole käytännössä mitään kokemusta käänteisestä suunnittelusta.

Rakennan vaihtoehtoista ohjainsovellusta multimedialaitteelle. Alkuperäinen ohjain on saatavana Windowsille (johon kohdistan) sekä Macille, iOS: lle ja Androidille Suurin osa laitteen ja ohjainsovelluksen välisestä viestinnästä on samanlaista kuin UPnP-protokolla, joka on siksi lähetetty XML-muodossa ja luettavissa selkeässä tekstissä. On kuitenkin yksi tapaus, jossa laite lähettää jonkinlaisen tunnuksen ohjaimelle (jota ohjain käyttää myöhemmin todentamaan muita palveluja vastaan) ja tämä lähetys näyttää olevan koodattu / salattu / peitetty (kutsutaan tekstissä "koodatuksi"). Tämä koodattu muoto lähetetään normaalin UPnP-vastauksen XML-kentässä.

Olen tehnyt seuraavat havainnot seuratessani useita koodatun muodon lähetyksiä:

  • Se alkaa aina 2: lla ja sitä seuraa base64-koodattu merkkijono
  • Kun lähetetään useita t kuvaa piston muutoksia, vaikka sisältö ei oletettavasti muuttuisi (oletetaan, ettei muita koodauksen kaltaisia ​​muuttujia kuten aikaleima sisälly). Joten jonkinlainen suola saattaa olla läsnä.
  • Merkkijonon pituus pysyy samana, jos tietoja ei muuteta
  • Jos kaikki tunnukset poistetaan ohjaimesta, on vielä joitain koodattuja tietoja lähetetään tällä alalla. Tämä saa minut ajattelemaan, että joko täyte tapahtuu, tai (todennäköisemmin) koodattu merkkijono dekoodaa tietyt sarjaliikenteen tietorakenteesta (ehkä jopa XML: stä).
  • Tunnistus, jota käytetään todennuksessa (joten dekoodattu lomake) pysyy samana, vaikka koodattu versio poikkeaisi toisistaan.

Itse sovellus on kirjoitettu muodossa c # , mutta kaikki tietoturvaan liittyvät asiat (mukaan lukien tunnuksen dekoodaus / käsittely) tuntuu kutsutaan käyttämällä pINVOKE-tiedostoa DLL-tiedostosta, jota ei ole kirjoitettu .net -tiedostossa.

Suoritin signrch: n dll: ssä, jos epäilen koodauksen tapahtuvan, mutta monet mahdolliset osumat palautetaan (yli 30). Kun tarkastellaan dll: ää, näyttää siltä, ​​että openssl-kirjasto on koottu siihen, joten siellä voi olla paljon vääriä positiivisia. DLL käsittelee myös HTTPS-viestintää, joten openssl ei välttämättä liity etsimääsi koodausmenetelmään.

Olen yrittänyt tutkia ida pro- ja windbg-ohjelmia, mutta oppaista luetuista tämä pyörii lähinnä asetusten ympärillä ennen kuin napsautat painiketta, joka aktivoi esim Kuitenkin minun tapauksessani ohjainsovellus saa nämä tiedot kerran sovelluksen käynnistyksen yhteydessä (kymmenien muiden UPnP-pakettien kanssa), ja arvaukseni on, että dekoodaus tapahtuu pakettia vastaanotettaessa, joten ei ole mahdollista asettaa katkaisupistettä esim. Pystyin kuitenkin selvittämään, että dekoodatut rahakkeet ovat muistissa (kuitenkin siirtymät poikkeavat aina, kun sovellus käynnistetään). Koodattua versiota ei näytä olevan muistissa ajon aikana.

Joitakin esimerkkejä: Koodattu merkkijono, kun tunnusta ei ole määritetty:

  2: nrlrLkCeoSOK34YSDZUKzbXs6olm9YSE4jLFnXONMJO5XhjfwCHPHJ1Jpx1 > 

kolme jouset, jotka edustavat (oletettavasti) samat tiedot:

  2: PITkxbk12KlLvsPtOV8ptZbqfMcK0EmSA / XOejbBHs8 + ffKNzwYSoz6oGdL5wiudTWJri4ZG / CwB2 / Pfh91ULuqBYWaLaW7YCzEzRb53NS + qarNiUAU0Kn7TCuhPzougX91sKFOP3BTWdUu6BQBP7IlWIZ1odp4ilU8RdEUhPvkOVyH9OBQwvpYXPbqca / OLGjNFPvomS5yaeOjtbpDuVd8mfvBycVHB8rULDvkJcXOS / qQWHOt8iYYZXHBXBD9v4h3Bs + o09sWsXxIh + 0q4qz + TKY / gYRnogenJ9vN83lkE6FTgtHns / 6zxlCt4xaFINmShdovvYlS / SDZ + aKgcGoq8zFjWJAbc2WQQwdxPTLZsCUmJSjH6jp1t6pCv7t4tBMaSpCTvAoRrXElNQIW1LOe / 9X6Cu5Ggjp17Whwe9 + 7DuWz6HxPEpq / TIVLIV7kJQRj6GcD7 / sWPakLLXxiN1Bf5yfJVvX3wA67vwXwigO5v5d5JzKPrjULskeCLUk // 61gPulxFguf63cn6NN1zXpDBOf3sCxwzquKIobE8s + F2mJ0pzWCNwYSg3IpvAUzH2fqLvsjqO6DdNr6AVZr77vPG9 / DQ2 + sFesFHMFQ859eVwNUSvYkxQoqFukxJOXfY + muf1AYqczvCA0K / uYDnKAj24oB0Wgw9YvA S8YHO9YI =
2: XfaIk9XLov9k8vHKXXZ9NFpUvNSk8QsEjI73E + txW6wg + kSr2hWWljLU5OOmQBcN + ACRKF4f4paJBxlf9AGiFnWyrNKT4nguM / 4iBsHsiIADlMavjYncsNntClcxPh + Me2l1W / uQzqG83SlHcM525P5wfpH45zC7 / hFjmWKPGIQ / k / LAsJy6gZlrmOZ0B2JJ0Cw + yUOzTD4EUo092EPRf7hq7aIrs0dLfPtT2D6LMKwmKAfW2fhllV / jJ33dAVn6Dy / PctFErGtvXljhnuI8r5qpMyIOZ5SsoFE / TNK + kOqWYVg5 / djbls / fpV2p70B9vxzpVkko8pfIJ3UmYsqu5WSlaX441Qs / gY8nzjWmJw8 + 8LzxL + P2YgYo5W + U6a / oS4R + sZ3FD0q3KQvmVNjklgdGipTOfsv9amP6M6ifAHPdgB5kj9ivOtufaiFKR9GqS9 / g4vjYQqofU3Yk2nB6xMi2W1eA2Mk + BJAjfsTr1Yo4Njoa0 + XQfAMfqpJe9Zka2NSLu2noDDEdRTqASJi6IiNxbsbsVGHhHFEAEojwTQlrk6xUtOt5RjTA6XovdgQoGywjU + FixEbEEQA0TbNE2KsFhmKXIauo3yQaZ9EKDMJjOMz53UK / EFEZu6L7yy7ijnQB13rSw + obIbFXr / J / vxc97EsRXm7zSUIQoEq9qwKE = 2: 9xVbeGOq4XDN26aIYcbNVYDAVQNgVseVvipidY71ZzJAKYlYdcDd46uIFQdfla5pXqupZABtl4Njg + wC8lxmxx2EFR1ZwBYr + ZbvswCQp9YKKMAhI3Ly12j3XNrtIAfl + EDDgz5woHNLXLfVthFel4WSe3mGHMa0S8ZcXRyRyLJHx7lIXZ4G68by2cLTYTldAWuYYl7xhmIJNLgMA8iI63FBGYiw / UT / 30KkLPoUP7As1R / GfItnDfp0pG5l63DtBFSo3mnDRVrdDIsYALRpsBLhhvx4 + 0CjlyMaK511pM0 + IxmtcE6L0L6 QhcztYzWcjnbjkLi7r9dmO5ABEfq8 / 8 + wpnxERXwiwRTsYPy2 / + rYQlLK0hkeGiqacbnjQQWyVRVzaE47oAhC9ln ws5go / c + + reDHhmpf / 9vj9RO7EzFq9LVZRxbxy7C5QZzHEqncSdR + TzOrs0MkRO3pe + e2Q5P68kgTYVO6K8XpvLU9ClfDyIOCpwNufRz / fEVl2ry5UrjS5d5k39 UheQizu9nu + Y + + + 4xC42Wd y1E7WsZYQaLgNL6EQP1w8yb3 + PwdvgOxgId7IMag81 / 4 + mjO9x / N1Zoq405nSXodirZ5RiWIAl4 + uHARqwDnX1lZQo7Fo0pMs8ZwOtGiqA8 / WVbMKqigBOEW6m2 / 2K2nI3cTYKqmVg =  / pre> 

Haluaisin kuulla mielelläni ehdotuksia tämän ongelman ratkaisemiseksi, jotta saat paremman käsityksen.

Yrititkö purkaa .net-osan? Onko se hämmentynyt?
Voin avata .net-osan dotPeekillä ilman ongelmia. Ongelmana on, että merkkijonon vastaanotto / dekoodaus ja käyttö hoidetaan kokonaan non-.net DLL: ssä
Kaksi vastused:
Sigtran
2014-01-27 15:57:56 UTC
view on stackexchange narkive permalink

Ei kommenttia, joten vastaus on :)

- Jos tiedät mitä dll on, sinun on tarkasteltava sitä ja kirjoitettu sen .net-tiedostoon, IDA ei todennäköisesti ole paras vaihtoehto ( henkilökohtaisesta kokemuksesta).

Jos kuitenkin etsit vielä dll: tä, joka sinun on purettava, kannattaa antaa APImonille ja kutsua laukaus, jotta löydettäisiin mikä dekompilointia tarvitsee.

Ehdotan, että yrität käyttää .net-kääntäjää, esimerkiksi dotPeek tai muuta. Voit yleensä lukea koodia sellaisena kuin se on mistä tahansa .net-ohjelmasta (ei peitetty / salattu) Jos dll on hämärtynyt, voit yrittää poistaa sen käytöstä de4dot: lla tai tyhjentää muistista ja analysoida sen sijaan.

Yllä olevat merkkijonot ovat ehdottomasti base64-koodattuja, joten todennäköisesti etsit kohdetta object.binary.base64

Valitettavasti en tehnyt tätä selväksi. Yleinen ohjelma on kirjoitettu .netissä, jonka katsoin jo dotPeekillä. Kuitenkin kaikki, joka liittyy koodatun merkkijonon vastaanottamiseen, dekoodaamiseen ja sen käyttämiseen todentamiseen etäpalvelua vastaan, tehdään non-.net DLL: ssä. Analyysini perusteella näyttää siltä, ​​että dekoodattu merkkijono ei koskaan jätä tätä DLL: ää.
Selvä :) Aloittaisin tarkastelemalla tämän dll: n vientiä ja selvittääkseen, olisiko nimet riittävän vihjailevia, ja tekisin vähän Googlen niitä. Saatat myös pystyä välittämään salatun merkkijonon parametrina dll-vientiin (kokeile ollydbg) ja debugata sen läpi nähdäksesi koko asian toiminnassa.
Mick
2014-03-30 04:43:50 UTC
view on stackexchange narkive permalink

Katso IDA Pron laajennus nimeltä IDA Scope. Siinä on salauksen tunnistustoiminto, joka mielestäni auttaa sinua.

enter image description here



Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...