Auteur Topic: "Hacken" ATS Advanced Reverse engineering (Deel 1)  (gelezen 9696 keer)

RPJAcobs

  • Aspirant
  • **
  • Berichten: 11
  • Veiligheid voor alles!
    • Bekijk profiel
  • Bedrijf: Syca B.V.
"Hacken" ATS Advanced Reverse engineering (Deel 1)
« Gepost op: vrijdag 14 oktober 2016, 10:06 »
De eerste stappen zijn gezet. Ik zal jullie meenemen in wat we aan het doen zijn.
Stap 1. Verkeer analyse
Om het verkeer tussen de centrale en de app op te vangen gebruiken we wireshark icm een arf spoofing programa Debookee. Hier zien we dat de app altijd begint met een standaard call:

c0 db dc 03 50 00 00 44  24 c0

Dit is hex code, op basis hiervan identificeert de centrale zit, niet ge-encrypt met zijn naam/type/firmware versie en een code. Daarna volgt een tweede code waarop de centrale telkens anders antwoord. De aanname is dat hier een soort handshake plaatsvindt waarna de communicatie encrypt verder gaat.

Stap 2. Decode android app
Om te zien wat de app doet hebben we de android app gedownload en uitgepakt. (.apk is eigenlijk een zip bestand. Hierin hebben we een aantal drivers en een certificaat gevonden:
Ats.advanved.drv
Ats.x500.drv
Ca.internal.drv
Sse-ca.cer

Daarnaast staan de functies in classes.dex. Deze hebben we “ge-reverse engineerd” met apktool naar smali code. Deze smali code hebben we ingelezen met adroid studio (met smali plugin). Nu kunnen we de code “lezen” dus kunnen we de communicatie naar de centrale opbouwen.

Stap 3 Proof of Concept
Nu gaan we een POC bouwen met een LAMP servertje (Linux, Apache, MySQL en PHP.

Alle lichten staan op groen, binnenkort zullen we dus kunnen babbelen met de centrale.

RPJAcobs

  • Aspirant
  • **
  • Berichten: 11
  • Veiligheid voor alles!
    • Bekijk profiel
  • Bedrijf: Syca B.V.
Re: "Hacken" ATS Advanced Reverse engineering (Deel 1)
« Reactie #1 Gepost op: vrijdag 14 oktober 2016, 10:07 »
De POC in php:

<?
$ip = "xx.xx.xx.xx"
$s1 = "c0 db dc 03 50 00 00 44  24 c0";

$fp = fsockopen($ip, 32000, $errno, $errstr, 30);
sent($s1, $fp);
fclose($fp);


function sent($s, $fp) {
  fwrite($fp, hex2bin($s));
  echo fread($fp, 128);
  echo "
";
}

function hex2bin($h)
{
   $h = str_replace(' ', '', $h);
  $r='';
  for ($a=0; $a < strlen($h); $a+=2) { $r.=chr(hexdec($h{$a}.$h{($a+1)})); }
  return $r;
}
?>

Jemmie

  • Erelid
  • *****
  • Berichten: 235
  • Veiligheid voor alles!
    • Bekijk profiel
Re: &quot;Hacken&quot; ATS Advanced Reverse engineering (Deel 1)
« Reactie #2 Gepost op: vrijdag 14 oktober 2016, 18:06 »
Tnx, keep us posted!

Torx

  • Aspirant
  • **
  • Berichten: 5
  • Veiligheid voor alles!
    • Bekijk profiel
Re: "Hacken" ATS Advanced Reverse engineering (Deel 1)
« Reactie #3 Gepost op: zaterdag 15 oktober 2016, 02:21 »
Heel interessant en leuk dat je het deelt. Thx

seba

  • Groentje
  • *
  • Berichten: 3
  • Veiligheid voor alles!
    • Bekijk profiel
Re: "Hacken" ATS Advanced Reverse engineering (Deel 1)
« Reactie #4 Gepost op: donderdag 15 februari 2018, 00:24 »
Sorry om een oud topic boven te halen, maar ben je hier ooit verder in geraakt?

Ik ben hier namelijk zelf ook mee bezig, maar misschien is er al een oplossing.

Ik had ook eerst de java app gedecompiled, maar daar zitten heel wat stukken in die niet gedecompileerd geraken, ik heb dan maar een groot stuk van de bytecode manueel terug omgezet naar java, maar er zitten nog wat fouten in. Wel ontdekt dat die driver files niet zo zeer drivers zijn, maar eerder een soort binary weergave van de mogelijke messages/protocol van het systeem. Een beetje protobuf-achtig. Echter heet dit systeem blijkbaar '(n)Ace', wat waarschijnlijk iets proprietary van UTC is, want hier is verder niets over te vinden. De meeste code doet ook gewoon wat directe byte array transformaties, dus mogelijk is dit automatisch geport uit een andere taal.

De feitelijke communicatie start idd met een soort fixed welkomst bericht, daarna zend het paneel zijn identiteit (waarna de juiste driver file wordt geladen) en daarna wordt een security key afgesproken voor de sessie. Dit wordt gedaan op basis van de master encryption key (zelf in te stellen, standaard is dit 000000000000000000000000). Dit process werkt ongeveer zo:
- Client genereert wat random data en gebruikt die als de helft van de sessie key en verstuurd dit (geencrypteerd met de master key) naar de ontvanger (=alarmsysteem)
- Alarmsysteem genereert de andere helft en verstuurd die nu terug naar de ontvanger.
- Beide hebben nu de 2 helften die de sessie encryptiesleutel vormen.

Hetzelfde systeem/protocol wordt eigenlijk voor alle communicatie kanelen gebruikt (zelfs ultraconnect, wat eigenlijk gewoon als een soort relay server werkt). Via de seriele poort (usb) is er wel geen encryptie, dus dan kan je eventueel directe replays doen van bepaalde commando's, maar de inhoud van de commando's zal nog steeds niet duidelijk zijn.

c0 is steeds de message delimiter.

Ik kan nu de informatie van de areas opvragen, maar de meeste andere commando's geven errors omdat mijn manuele omzetting van bytecode naar java niet helemaal correct is gebeurd. Er zijn ook veel meer  messages in die driver file dan wat er mogelijk is met de app, dus waarschijnlijk wordt dit ook voor de ATS8500 software enzo gebruikt.

Het doel is trouwens dat ik het uiteindelijk kan integreren in mijn domotica systeem en dan hoef ik niet meer die gatlelijke en buggy app van aritech zelf te gebruiken. Aritech loopt hier werkelijk hopeloos achter op de concurrentie.
« Laatst bewerkt op: donderdag 15 februari 2018, 00:29 door seba »

brampiec

  • Actief lid
  • ***
  • Berichten: 25
  • Veiligheid voor alles!
    • Bekijk profiel
Re: "Hacken" ATS Advanced Reverse engineering (Deel 1)
« Reactie #5 Gepost op: zaterdag 17 februari 2018, 13:45 »
Ik heb gemerkt dat ik met de app op mijn centrale kan inloggen met de default installer PIN, al is deze verschillend van de installer PIN ingesteld op mijn systeem.
Als ik dan ingelogd ben met de default installer PIN en probeer ik dan om het alarm bijvoorbeeld in te schakelen krijg ik een error.

Atomic

  • Erelid
  • *****
  • Berichten: 790
    • Bekijk profiel
  • Functie: Technicus
Re: "Hacken" ATS Advanced Reverse engineering (Deel 1)
« Reactie #6 Gepost op: zaterdag 17 februari 2018, 14:31 »
Ik heb gemerkt dat ik met de app op mijn centrale kan inloggen met de default installer PIN, al is deze verschillend van de installer PIN ingesteld op mijn systeem.
Als ik dan ingelogd ben met de default installer PIN en probeer ik dan om het alarm bijvoorbeeld in te schakelen krijg ik een error.
Heb ik met mijn ATS1500AIP MR4.0 geen last van, krijg de melding "Fout - Het paneel geeft geen toegang"
Wel getest met de nieuwe app Advisor Advanced Pro v1.0.0.

brampiec

  • Actief lid
  • ***
  • Berichten: 25
  • Veiligheid voor alles!
    • Bekijk profiel
Re: "Hacken" ATS Advanced Reverse engineering (Deel 1)
« Reactie #7 Gepost op: zaterdag 17 februari 2018, 15:31 »
Ah Thanks. Ik wist niet dat er een Advisor Advance Pro app was. Deze werkt blijkbaar ook op de ATS2000. Als ik deze gebruik kan ik ook gewoon inloggen met de default installer pin, dus blijkbaar een bug in de firmware van de ATS2000.

Welk is de laatste firmware voor de ATS2000? Is er veel verschil met de nieuwe ATSx500 reeks?

Julian Wendler

  • Erelid
  • *****
  • Berichten: 598
  • sani salvique
    • Bekijk profiel
  • Functie: Monteur beveiligingsinstallaties, All-round Beveiliger
Re: &quot;Hacken&quot; ATS Advanced Reverse engineering (Deel 1)
« Reactie #8 Gepost op: zaterdag 17 februari 2018, 16:54 »
Als UTC nou eerst eens een app maakt voor iOS... een fatsoenlijke app.  Of dat nou voor advanced of classic is maakt niet uit.


Verzonden vanaf mijn iPhone met Tapatalk
Met Limburgse groet,

Julian Wendler


-----------------------------------------------------
Alles is op eigen titel en niet te achterhalen op een bedrijf of andere natuurlijke persoon.

Atomic

  • Erelid
  • *****
  • Berichten: 790
    • Bekijk profiel
  • Functie: Technicus
Re: "Hacken" ATS Advanced Reverse engineering (Deel 1)
« Reactie #9 Gepost op: zaterdag 17 februari 2018, 17:16 »
Ah Thanks. Ik wist niet dat er een Advisor Advance Pro app was. Deze werkt blijkbaar ook op de ATS2000. Als ik deze gebruik kan ik ook gewoon inloggen met de default installer pin, dus blijkbaar een bug in de firmware van de ATS2000.

Welk is de laatste firmware voor de ATS2000? Is er veel verschil met de nieuwe ATSx500 reeks?
Laatste FW


brampiec

  • Actief lid
  • ***
  • Berichten: 25
  • Veiligheid voor alles!
    • Bekijk profiel
Re: "Hacken" ATS Advanced Reverse engineering (Deel 1)
« Reactie #10 Gepost op: zaterdag 17 februari 2018, 18:16 »
Kan je de centrale via het netwerk updaten of heb je een rechtstreekse verbinding nodig?
 Wel raar, mijn centrale draait nu 026.026.0141 en niet de 0142.

Zou je me hieromtrent wat uitleg kunnnen geven hoe een centrale best te updaten en waar ik alles moet gaan halen?

Alvast bedankt!
Bram

Atomic

  • Erelid
  • *****
  • Berichten: 790
    • Bekijk profiel
  • Functie: Technicus
Re: "Hacken" ATS Advanced Reverse engineering (Deel 1)
« Reactie #11 Gepost op: zaterdag 17 februari 2018, 19:35 »
Kan je de centrale via het netwerk updaten of heb je een rechtstreekse verbinding nodig?
 Wel raar, mijn centrale draait nu 026.026.0141 en niet de 0142.

Zou je me hieromtrent wat uitleg kunnnen geven hoe een centrale best te updaten en waar ik alles moet gaan halen?

Alvast bedankt!
Bram
Lees dit document maar eens.

Sjakie

  • Erelid
  • *****
  • Berichten: 309
  • Veiligheid voor alles!
    • Bekijk profiel
  • Functie: MBV - IDB - ODB
Re: &quot;Hacken&quot; ATS Advanced Reverse engineering (Deel 1)
« Reactie #12 Gepost op: zaterdag 17 februari 2018, 19:56 »
Heb ik met mijn ATS1500AIP MR4.0 geen last van, krijg de melding "Fout - Het paneel geeft geen toegang"
Wel getest met de nieuwe app Advisor Advanced Pro v1.0.0.
Hier lukt het ook niet met de standaard code, betreft een ATS1500AIP MR4.0 i.c.m. de "gewone" Advisor Advanced app...