Jak krok po kroku zhakowano i okradziono giełdę kleptowalut

dodał 25 marca 2015 o 20:14 w kategorii Włamania  z tagami:
Jak krok po kroku zhakowano i okradziono giełdę kleptowalut

(źródło: btckeychain)

O bezpieczeństwie najlepiej uczyć się na konkretnych przykładach z życia wziętych. Historia AllCrypt, giełdy kleptowalut, jest świetnym przykładem, jak proste problemy i zaniedbania mogą prowadzić do katastrofalnych skutków.

Co prawda giełda AllCrypt straciła jedynie 37 BTC, ale przynajmniej podzieliła się z użytkownikami bardzo szczegółowym opisem wydarzeń, które doprowadziły do kradzieży. Historia jest wciągająca i za każdym akapitem odkrywa przed czytelnikiem nowe pokłady pecha i nieudolności właścicieli serwisu.

Nie stawiaj giełdy BTC na WordPressie

Nie potrafimy tego ani zrozumieć, ani wyjaśnić, ale giełda AllCrypt oparta była na mechanizmach WordPressa. Tak po prostu. Przejdźmy nad tym do porządku dziennego i udajmy, że rozumiemy.

Jedyny komentarz

Jedyny komentarz

Atak zaczął się od przełamania zabezpieczeń skrzynki pocztowej pracownika technicznego giełdy. Skrzynka była umieszczona na prywatnym serwerze i właściciel giełdy ani sam pracownik nie mają rzekomo pojęcia, jak doszło do włamania. Pracownik twierdzi, że nigdzie nie używał tego samego hasła oraz że hasło spełniało kryteria złożoności. Pozostaje wobec tego metoda siłowa, jednak tej teorii nie można zweryfikować, ponieważ z tajemniczych powodów serwer IMAPa nie logował nieudanych prób logowania.

Włamywacz w skrzynce znalazł wiadomości od właściciela serwisu oraz od dyrektora marketingu. Próbował następnie wygenerować reset hasła dla wszystkich trzech kont, ale adresy poczty elektronicznej technika oraz właściciela użyte w WordPressie były inne niż te znane włamywaczowi. Więcej szczęścia miał z dyrektorem marketingu, który korzystał z tego samego konta do korespondencji jak i do rejestracji w WordPressie.

Nie dawaj uprawnień działom marketingu

Z nieznanych przyczyn dyrektor marketingu, który otrzymał link do resetu hasła, przesłał wiadomość dalej do właściciela i do technika. Do technika, którego konto było w posiadaniu włamywacza. Takiej okazji włamywacz nie mógł przegapić, zresetował konto i uzyskał administracyjny dostęp do WordPressa (dyrektor marketingu potrzebował m. in. uprawnień do wgrywania nowych plików).

Włamywacz w kolejnym kroku wgrał na serwer webshella pod nazwą class.php. Za jego pomocą przejrzał wszystkie pliki i znalazł konfigurację dostępu do bazy danych – co prawda poza drzewem serwera WWW, ale użytkownik WWW musiał mieć do tego pliku dostęp. Tam włamywacz znalazł hasła do bazy danych. Wgrał narzędzie do zarządzania bazami, założył sobie nowe konto użytkownika w serwisie i podniósł saldo konta bezpośrednio w bazie dopisując sobie nieistniejące bitcoiny.

Włamywacz posiadał już saldo BTC, ale nie mógł jeszcze przelać środków na zewnątrz serwisu. Zadziałał mechanizm zabezpieczeń, który jednocześnie obsługiwał transakcje w portfelach i funkcjonował jako wrapper przelewów między portfelami, utrzymując niezależny zapis posiadanego salda. Włamywacz miał zatem BTC w bazie, ale nie miał we wrapperze. Aby ominąć ten problem, włamywacz za swoje całkiem wirtualne BTC kupował nieco mniej wirtualne waluty takie jak DOGE czy LTC, które następnie sprzedał ponownie za BTC. Dzięki tym transakcjom jego saldo we wrapperze zostało zaktualizowane i mógł już wycofać skradzione środki.

To jednak nie koniec całego włamania a przepaść, w którą stacza się serwis, się nie kończy. Włamywacz po opróżnieniu kont sensownych walut zabrał się także za pozostałe. Uzyskał uprawnienia administratora serwisu WWW (nie wyjaśniono jak – prawdopodobnie przez WordPressa) i wykonał kopię bezpieczeństwa kluczy prywatnych wszystkich portfeli znajdujących się w serwisie. Co prawda kopia bezpieczeństwa leżała poza drzewem katalogowym strony WWW, ale jako że została wykonana przez skrypty serwera, serwer posiadał także uprawnienia do jej odczytu. Co prawda administrator zamknął serwis i zmienł hasła, ale skoro włamywacz miał już klucze prywatne, to zaimportował je do swoich portfeli i opróżnił wszystkie rachunki serwisu do zera.

Ciekawe dwa twwety właściciela serwisu

Ciekawe dwa twwety właściciela serwisu

Nie trzymaj wszystkiego na serwerze

Włamywacz ukradł nie tylko 24 BTC użytkowników i 10,8 BTC zysku zgromadzonego przez serwis po 13 miesiącach działania, ale także 2 BTC zebrane na cele charytatywne. Właściciel przed włamaniem ogłosił, że planuje zamknięcie serwisu, który generował zbyt małe obroty by być opłacalnym. Czyżby zatem ktoś zdecydował się obrobić sklep przed jego likwidacją? W ramach epilogu dodamy jedynie, że giełda oferowała funkcję zimnego portfela, pozwalającą na przechowywanie środków poza serwerem. Funkcja była opcjonalna i nikt z niej nie skorzystał. Amen.