Bir otomat makinesini nasıl hacklediğimi görün

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

"One Kiss" bugün tatlı bir şekilde piyasaya sürüldü, Wang Dalu, Lin Yun, "çift sokak çekimi" tatlı kızarmış! Sevgililer Günü böyle olmalı
önceki
Yine bir domuz takım arkadaşı tarafından çekildi! OnePlus 5T Sandstone White, JD'de planlanandan önce raflara koyuyor: 3499 yuan
Sonraki
Qualcomm Snapdragon Wear 3100 burada, "Android serisine" ışık tutabilir mi?
FAW Jilin Senya R7, 1.5T modelleri piyasaya sürecek veya sonbaharda piyasaya sürülecek
8 yetişkin web sitesi çok sayıda kullanıcının gizliliğini ortaya çıkarır, favorilerinizi hızlıca kontrol edin
"Yüzüklerin Efendisi" biyografisi "Tolkien" prömiyeri fragmanı
Snapdragon 845'i ezin! Samsung Exynos 9810 piyasaya çıktı: Apple A11'e yaklaşan performans
Sadelik basit değil! Hiroshi Fujiwara tarafından yönetilen tek tip deney sonbahar ve kış serisi Lookbook güçlü bir şekilde ortaya çıktı!
Kendi kendine giden taksiler lidar'ı üç yıl sonra "patlatıyor" mu? Velodyne, otomobil sınıfının ASIC versiyonunu oluşturmaya odaklanıyor
Usta nişancı hala zarif, Hou Yi yeni ekipman için uygun!
Fiat Tipo S-Design Special Edition iç pazarı özlüyor
"Elli Meters of Love" Sevgililer Günü'nde yayınlandı
Spor ayakkabılardan hoşlanan altı popüler kişiyle oynadım. Hızlı sorular ve cevaplar
2018 Çin Mobil Bankacılık Kullanıcı Anketi Raporu: 138 banka 180'den fazla uygulamayı açıkladı!
To Top