Sorumluluk Reddi: Bu makale yalnızca teknik tartışma içindir ve herhangi bir yasa dışı kullanım için kesinlikle yasaktır.
Hiç şüphe yok ki, otomatlar çok popüler şeylerdir ve onlardan her zaman küçük atıştırmalıklar alırız. Birkaç yıl önce, satış makineleri yalnızca çevrimdışı para ödemelerini kabul etti ve daha sonra, popüler NFC teknolojisini yavaş yavaş benimsedi. "COGES" otomatlarından (bir İngiliz otomat üreticisi) bahsedersem, bunun birçok insan için kesinlikle iyi günlerin anılarını geri getireceğini düşünüyorum. Zaman geçiyor ve sen dikkatini vermezsen, bazı şeyler köklü değişikliklere uğradı Şimdi, bu her şeyin ağ ile birbirine bağlı olduğu bir çağ. Bugün, bir otomat makinesini nasıl hacklediğime ve otomat makinesinde defalarca yeniden şarj edip ürün satın aldığımın bir örneğini sizlerle paylaşacağım.
Neden
Bir gün derin ve yalın gitmenin sıkıcı hayatından yoruldum ve güneşin tadını çıkarmak ve dinlenmek için memleketime dönmeyi planladım ve ayrılmadan önce okuldaki bir üniversite hocasını ziyaret ettim. Koridorda yürürken öğretmen bir fincan kahve içmeye gitmemizi önerdi, bu yüzden otomat makinesine geldik.
Dedim: Hadi, bozuk param var.
Öğretmen: Bekle, ödeme yapmak için mobil uygulamayı kullanabilirim, daha ucuza gelir.
Gördüğünüz gibi, bu bir Argenta satış makinesidir. APP ödeme yöntemi Bluetooth ve NFC işlevlerine dayanmaktadır Ah, sanal cüzdan iyi!
Şu anda, aklımda parıldayan düşünce - onu kırabilir miyim? ? ?
Beyaz Şapka'nın sesi: Ödül yok, sadece onu bir cesaret olarak kabul edin.
Gray Hat'in sesi: Sadece bir uygulama olarak.
Black Hat'in sesi: Hadi dostum, gidip şu şeyi paketleyelim, harika!
O zamandan beri karanlığı başka bir gün açmaya karar verdim.
teknik Analiz
Bir gün, Android telefon ayarlarımda USB hata ayıklama modunu açtım, ardından otomat makinesi uygulamasını uygulama mağazasından indirdim ve orijinal uygulamanın apk dosyasını dizüstü bilgisayara aktardım ve hata ayıklamak ve analiz etmek için adb'yi kullandım:
# adb pull /data/app/com.sitael.vending-1/base.apk ./Argenta.apk
Bunu apktool ile derleyin:
# apktool d ./Argenta.apk ./Argenta
Ardından java kaynak dosyalarını çıkarmak için jadx'i kullanın:
# jadx ./Argenta.apk
AndroidManifest.xml manifest dosyası, her Android programında gerekli bir dosyadır.Tüm Android programının global açıklama dosyasıdır.Programdaki Etkinlikleri, İçerik Sağlayıcıları, Hizmetleri ve Amaç Alıcılarını bildirmenin yanı sıra uygulamanın adını ve kullanımını da belirtebilir Simge, dahil bileşenler, izinler ve enstrümantasyon (güvenlik kontrolü ve testi). Burada, başlangıçta, AndroidManifest.xml dosyasındaki hata ayıklama özniteliğini true olarak değiştirmeniz gerekir ve ardından telefonda hata ayıklayabilirsiniz, yani uygulamaya gidebilirsiniz. < etiket > Etikete bir satır android: debuggable = true özniteliği ekleyin.
Ardından, apk dosyasını yeniden oluşturun:
# apktool b ./Argenta
Ardından, yeni bir anahtar oluşturmak için araç tuş takımını kullanın:
# keytool -genkey -v -keystore Argenta.keystore -alias Argenta -keyalg RSA -keysize 2048 -validity 10000
Ardından, tüm apk dosyasını jarsigner ile imzalamak için oluşturma anahtarını kullanın:
# jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore Argenta.keystore Argenta.apk Argenta
Ardından apk program dosyasını optimize etmek için zipalign aracını kullanın
# zipalign -v 4 Argenta.apk Argenta-imzalı.apk
Son olarak, yeniden oluşturulmuş apk dosyasını yükleyebilirsiniz.
# adb install ./Argenta-signed.apk
Bu APP programını telefonuma yükleyip çalıştırdım ve logcat aracını program günlüklerini paket adına göre filtrelemek ve analiz etmek için kullandım:
# adb logcat pid = `adb kabuğu pidof -s com.sitael.vending`
Ancak, hiçbir şey kazanılmadı ve herhangi bir ipucu için kaynak koduna bakmayı planlıyorum. AndroidManifest.xml dosyasından RushOrm'a yönelik birden fazla referans buldum.
Yani, burada aradığım ilk anahtar kelime db_name, buradan argenta.db'nin gölgesini buldum:
Sonra, cep telefonunda, argenta.db'ye bakmaya devam etmek için Kök Gezgini aracını kullanıyorum, gerçekten var:
Ardından, analiz için bu dosyayı telefondan dizüstü bilgisayara kopyalamak için adb pull kullandım:
# adb pull /data/data/com.sitael.vending/databases/argenta.db ./db
Ve bu db dosyasını SQLite'ın veritabanı tarama aracı SQLiteBrowser ile açmayı deneyin:
Açıkçası, şifre korumalı ve açılamaz.
Tersine mühendislik
Kaynak kodda RushAndroidConfig.java'yı analiz ettim:
Ondan, veritabanını yapılandırmak için çeşitli yöntemler (yöntemler) keşfettim, ancak bu anahtar değeri dikkatimi çekti:
this.encryptionKey = getDeviceId (içerik)
Aşağıdaki gibi tanımlanır:
Yukarıdaki şekildeki bilgilerden de görülebileceği gibi, hedef APP programı, argenta.db SQLite veritabanının şifreleme anahtarı olarak cep telefonunun IMEI seri numarasını kullanır Normal bir cep telefonu için, seri numarasını almak için klavyede * # 06 # girin. Öyleyse, veritabanı dosyasını açıp açamayacağımızı görmek için cep telefonu seri numarası ile deneyelim:
Vay canına, gerçekten işe yarıyor:
Biraz incelemeden sonra UserWallets tablosunu buldum:
Ve cüzdanKredi sütununu değiştirip 0'dan 5'e (5 Euro) değiştirdi:
Ardından, bu veritabanı dosyasını mobil uygulamaya geri kopyalıyorum:
# adb pull ./argenta.db /data/data/com.sitael.vending/databases/argenta.db
Crack doğrulama
Şu anda YY, Age of Empires'da (Age of Empires) "Robin Hood" gibi hissediyorum, istediğimde 1.000 altın paraya sahip olabilirim. Peki, önce küçük bir program yazalım, bu program aracılığıyla hedef APP veritabanını hızlı bir şekilde dökebilir / geri yükleyebilir / kurcalayabilirsiniz:
Şimdi, cep telefonumuzu alalım ve bir denemek için otomat makinesine gidelim! Haha, başarılı bir şekilde bir şişe maden suyu satın aldım ve sorunsuz tüketmek için gerçekten 5 yuan harcayabilirim ve tekrar tekrar kullanılabilir!
https://www.youtube.com/watch?v=LfczO8_RfLA
sonuç olarak
APP hesabındaki 0 yuan'dan daha sonra APP veritabanını kırmaya kadar aşağıdaki işlemleri yapabilirim:
APP hesabının miktarını değiştirin
Otomattan her şeyi satın alın
Bakiye ile satın almaya devam edin
Bakiye 0 olduktan sonra bakiye tekrar değiştirilebilir
Otomatik satış makinesinde mal satın almak için tekrarlanan tüketim
APP kaynak kodunun tamamının kaba bir analizini yaptıktan sonra, kodların çoğunun gizlenmediğini fark ettim, bu da satış makinesi üreticilerinin kullanıcı verilerini ve uygulama güvenliğini korumak için iyi önlemler almadığı anlamına geliyor.
Tekrar tekrar mücadele ettim.Bir ay sonra, beyaz şapka zihniyetinden dolayı, bu güvenlik açığını hala otomat makinesi üreticisine bildirdim.Ayrıca kibarca mevcut APP mimarisini terk etmelerini ve sıfırdan daha iyi ve daha güvenli bir program geliştirmelerini önerdim.
* Referans kaynağı: hacknoon, bulutlar derlendi, lütfen FreeBuf.COM'dan yeniden yazdırın