Atak APA. Szczegółowa analiza i metody obrony

14.08.2023
15 min
3009
1
Atak APA. Szczegółowa analiza i metody obrony. Główny kolaż artykułu.

Ataki Address Poisoning Attack (APA) z wykorzystaniem przelewów o wartości 0 USD stały się w ostatnich tygodniach coraz częstsze. Od 2 grudnia w sieci “zatruto” ponad 340 tysięcy adresów. Łącznie mamy 99 adresów ofiar i ponad 1,64 miliona dolarów skradzionych środków.

W tym artykule X-explore przedstawia kompleksową analizę takich ataków, śledzi atakujących onchain i pokazuje szczegółowy schemat implementacji ARA.

Chciałbym, aby aplikacje portfelowe aktywowały takie alerty o ryzyku. A zwykłym użytkownikom, aby byli świadomi takich zagrożeń podczas przesyłania kryptowalut.

Tłumaczenie artykułu z x-explore.eth

Historia

Niedawno nasze monitorowanie ryzyka onchain wykazało, że przelewy 0 USD są częste w sieciach ETH i BSC. Wzięliśmy dane transakcji łańcucha BSC jako przykład, aby pokazać, jak to się dzieje.

Ofiara A dokonuje normalnej transakcji, aby przelać 452 BSC-USD do użytkownika B. Ale użytkownik B otrzymuje 0 BSC-USD od atakującego C. W tym samym czasie, w tej samej transakcji hash, sam użytkownik A omyłkowo przesyła 0 BSC-USD na adres atakującego C (implementacja operacji transferu 0 BSC-USD w obie strony):

Przykład ataku APA

Wielu użytkowników nie zdaje sobie sprawy, co jest nie tak. Obawiają się, że ich klucze prywatne są zagrożone, a atakujący kradną aktywa. Oto zrzuty ekranu z postów w mediach społecznościowych:

Zrzuty ekranu postów dotyczących ataku

Cele ataku

W rzeczywistości użytkownicy, którzy stanęli w obliczu takiej sytuacji, nie muszą się denerwować. Ich aktywa są bezpieczne, klucz prywatny nie został naruszony. Muszą tylko dokładnie potwierdzić adres i nie przesyłać niewłaściwego adresu. Metody hakera są bardzo proste:

  1. Śledzi informacje o transferze kilku steblecoinów onchain. Na przykład przechwytuje informacje o transferze, które adres ofiary A często wysyła do użytkownika B.
  2. Następnie tworzy hakerski adres C z tymi samymi pierwszymi i ostatnimi cyframi co adres użytkownika B. Następnie ofiara A i haker Adres C przesyłają sobie 0 monet. (W tym przypadku atakujący może użyć narzędzia do generowania numerów Profanity, aby wygenerować adres z tymi samymi pierwszymi i ostatnimi 7 cyframi, co adres użytkownika w ciągu kilku sekund).
  3. Następnym razem, gdy ofiara A przez nieuwagę skopiuje adres historycznej transakcji, bardzo łatwo jest skopiować dokładnie adres C przygotowany przez hakera na potrzeby podstępu. W ten sposób środki są przelewane na niewłaściwe konto.
Adres użytkownika

Ofiary przelewają pieniądze na normalne adresy:

Adres atakującego

Adres hakera z przelewami 0 USD:

Adres hakera z przelewami

Ofiary przelewają pieniądze na adresy hakerów

Oto nasze wnioski dotyczące ataku polegającego na zatruwaniu adresów:

  1. Po pierwsze, haker sprawia, że jego adres pojawia się w historii transakcji użytkownika. Celem jest przeoczenie użytkownika i pomylenie go z zaufanym kontaktem. Oznacza to, że jest to adres, na który często wysyła pieniądze.
  2. Po drugie, haker tworzy adres, który pasuje do zaufanego adresu pod względem pierwszej i ostatniej cyfry. Przez pomyłkę może on zostać wykorzystany przez ofiarę do kolejnej transakcji.

Użytkownicy ryzykują utratę kapitału, więc miej się na baczności!

Trendy

Od 2 grudnia odnotowano dużą liczbę takich ataków: 290 000 w sieci BSC i 40 000 w sieci Ethereum. Liczba niezależnych adresów dotkniętych atakami przekroczyła odpowiednio 150 000 i 36 000.

Jeśli chodzi o trendy, sieć BSC zaczęła być atakowana 22 listopada, a sieć ETH 27 listopada. Tymczasem skala ataków w obu blockchainach rośnie.

Widzimy również, że ataki mają pewną regularność w czasie. Ich wolumen znacznie spada każdego dnia między 17:00 UTC a 0:00 UTC. Tak więc podejrzani napastnicy najprawdopodobniej mieszkają w azjatyckiej strefie czasowej.

Ilość ataków

Na dzień 2 grudnia ofiarami oszustwa padły 94 unikalne adresy. Stracili oni środki o łącznej wartości 1 640 000 USD. Przewidujemy, że apetyt atakujących będzie tylko rósł. W najbliższej przyszłości coraz więcej użytkowników będzie narażonych na tego typu oszustwa.

Liczba ofiar

Przeanalizowaliśmy również koszt ataku napastników. Łączna kwota wynosi obecnie blisko 26 000 USD (46 BNB + 10 ETH). Jednocześnie atakujący faworyzuje BSC-USD i USDT – najprawdopodobniej ze względu na wysoki obrót i popularność tych stablecoinów.

Koszt ataku

Śledzenie sprawcy

Śledzimy jednego z oszustów, który wykorzystał dwie duże scentralizowane giełdy. Pełny proces jest pokazany na poniższym obrazku.

  1. Adres źródłowy środków pochodzących z ataku jest powiązany z kontem OKX.com. Atakujący najpierw przenosi te monety z sieci TRON do sieci BSC za pomocą mostu crosschain Transit.Finance.
  2. Skradzione środki trafiają ostatecznie do Huobi.com. Tutaj atakujący ponownie wykorzystuje most Transit.Finance do transferu do sieci TRON.
Łańcuch ataku

Przejdźmy dalej i prześledźmy przepływ skradzionych środków do źródła:

  1. Adres ofiary: 0xe17c2b2b40574d229a251fe3776e6da2cc46aa5e
  2. Przelewa 1300 monet na adres atakującego: 0x720c1cfe1cfe1bfc38b3b3b21c20961262ad1e095a6867 (przelew był w dwóch ratach).
  3. Następnie atakujący wpłaca środki na ten adres: 0x89e692c1b31e7f03b7b7b9cbb1c7ab7872ddeadd49.
Sekwencja działań osoby atakującej
  1. Atakujący wykonał cross-chainowy transfer środków pod adresem: 0x89e692c1b31e7f03b7b7b9cbb1c7ab7872ddeadd49. W tym hashu: 0x72905bd839f682f795946d285500143ee7606e9690df2ad32968e878ad290d9f
  2. W transakcji pokazanej poniżej przekazano 10561 USDT za pośrednictwem kontraktu Transit.Finance: 0xb45a2dda996c32e93b8c47098e90ed0e7ab18e39
  3. Dzienniki zdarzeń dla tej transakcji pokazują, że monety USDT trafiły do sieci TRON. Oto adres: TLUKBw37BVWDZdhbGco2ZEfdMd5Cit8TMD
    • Odpowiadaon hashowi transakcji w sieci TRON: 716507136ad28717ffd5f2f437af753ff96d344d2bcbe83f24d801db49f5a884.
Hash transakcji w sieci TRON
  1. Atakujący ostatecznie dodał adres TLUKBw37BVWDZdhbGco2ZEfdMd5Cit8TMD do giełdy Huobi. Adresy depozytów do wykonania to TPtzsrCAG61QMwig3jZV8Px7Rd1WZVnRXG, TDp7r3S1hJeiNfH1CvCVXeY8notY47nagJ:
Atakujący dodał adres do giełdy Huobi

Analiza zasady ataku

Przypadek ataku 1:

EOA: 0xBAA1451bE8C33998CD43F375c2e67E79c1a104AD

CA: 0x7ceBeb6035B231A73CB5Fb4119c2FbBC04Ec6fD1

Przypadek ataku 2:

EOA: 0x616384a80f32aDb65243522971aE2ba7664B62E3

CA: 0x6f00Ed594A6AceEf0E1A6FE023Ecd5Eb96c8665a

Przykład ataku

Haker kontroluje różne adresy i przesyła 0 BSC-USD na adresy ofiar w trybie wsadowym za pośrednictwem kontraktów.

Ataki na Binance Smart Chain obejmują głównie tokeny takie jak BSC-USD, BUSD, USDC, ETH itp. Większość z tych ataków jest przeprowadzana za pomocą pliku wsadowego, który uruchamia polecenie transferFrom() na kontrakcie ataku. Istnieją jednak również przypadki ręcznego uruchamiania funkcji transfer(). Zasada jest w zasadzie taka sama. Poniżej widzimy przykład umowy ataku z BSC-USD.

transferFrom()

W transakcji, w której atakujący używa takich skryptów, umowa ataku wywołuje tylko funkcję transferFrom() BSC-USD. Po wypełnieniu parametrów nadawcy, odbiorcy i kwoty, haker może uruchomić przelewy 0 USD między dowolnymi adresami. Jednocześnie generuje polecenia AuthoriseApproval() i TransferTransfer().

Eksplorator transakcji Phalcon Blockchain

Parsowanie hasha transakcji Binance Smart Chain dla txhash 0x825a3281e1897239c01797e590d3d62c1f9ab4c323bd8484c142541ac77ad73e

phalcon.blocksec.com

Skrypt TransferFrom()

Informacje o transakcjach z przeglądarki blockchain Blocksec phalcon

Kod źródłowy kontraktu BSC-USD pokazuje, że funkcja transferFrom () wywołuje kolejno funkcje _transfer() i _approve():

Informacje o transakcji z przeglądarki blockchain Blocksec phalcon

Opcja _transfer () ma prostą funkcję. Najpierw wyklucza wszystkie adresy null z transakcji. Następnie odejmuje pieniądze dla nadawcy i dodaje pieniądze dla odbiorcy. Na koniec rejestruje zdarzenie transferu. Użyte tutaj funkcje dodawania i odejmowania add()/sub( ) to biblioteka SafeMath utworzona w kolekcji inteligentnych kontraktów OpenZeppelin. W przypadku przepełnienia zgłaszany jest błąd:

Informacje o transakcji z przeglądarki blockchain Blocksec phalcon

Funkcja _approve( ) wyklucza również pełny adres null i zmienia wartość autoryzacji. Głównym zadaniem tej funkcji jest obliczenie parametru wywołania transferFrom dla asercji. Używa ona następującego skryptu:

_allowances[sender][_msgSender()].sub(amount, “BEP20: transfer amount exceeds allowance”)

Ten skrypt odejmuje liczbę istniejących tokenów autoryzacyjnych od przelewu. Pozostała kwota autoryzacji jest umieszczana w asercji i ponownie autoryzowana. Użyta tutaj funkcja odejmowania sub( ) jest również biblioteką SafeMath z kolekcji inteligentnych kontraktów OpenZeppelin. Zgłasza ona błąd powrotu w przypadku przepełnienia. Jeśli jednak parametr sumy całego procesu wynosi zero, żaden mechanizm wykrywania nie może odrzucić transakcji. Prowadzi to również do dużej liczby zerowych transferów onchain, które mogą być wysyłane normalnie. Haker musi jedynie uiścić opłatę, aby osiągnąć solidny zysk.

Informacje o transakcji z przeglądarki blockchain Blocksec phalcon

transfer()

Wywołanie funkcji transfer () ma taką samą zasadę działania jak opisana powyżej. Tylko cały proces dodaje lub odejmuje wykrywanie przepełnienia. Nie ma filtrowania zerowych transferów:

Wywołanie funkcji transfer()

BNB

W procesie śledzenia (namierzania) ataku tokenowego znaleźliśmy również pierwszy i ostatni identyczny atak phishingowy poprzez transfer 0 BNB. Zasada jest tutaj podobna do phishingu tokenowego: haker tworzy pierwszy i ostatni identyczny adres do phishingu.

Transakcje z atakiem:

https://bscscan.com/tx/0x5ae6a7b8e3ee1f342153c1992ef9170788e024c4142941590857d773c63ceeb3

Po takich sztuczkach użytkownik może pomylić adresy i przypadkowo przesłać tokeny na adres hakera:

Normalny adres użytkownika:

0x69c b60065dd0197e0837fac61f8de8e8186c 2a73

Adres hakera:

0x69c 22da7a26a322ace4098cba637b39fa0a4 2a73

Atak z BNB

Wnioski

Zespół X-explore zapewnia obecnie monitorowanie online takich ataków w czasie rzeczywistym. Aby uniknąć dalszych zagrożeń, zalecamy

  • Zainstalowanie aplikacji, która pomaga użytkownikom rozróżniać adresy na podstawie koloru lub innych wskazówek.
  • Użytkownicy powinni dokładnie sprawdzać historyczne adresy transakcji podczas przesyłania środków.
  • Zaleca się przechowywanie osobnych zapisów z adresami gdzieś na osobnych dokumentach. Nie jest to zbyt wygodne, ale jest niezawodne.

Dbaj o bezpieczeństwo swoich finansów i nie zapomnij przeczytać naszych najnowszych poradników.

Co sądzisz o tym artykule?

1
0

artykuły na ten sam temat

Proxy dla drophunterów i nie tylko: dlaczego są potrzebne i jak...
avatar Denis Solomyanyuk
17.03.2024
Gdzie przechowywać kryptowaluty w 2024 roku?
avatar Anastasia Mirza
27.02.2024
Czym jest przeglądarka Tor: dlaczego jest interesująca dla...
avatar Ivan Pavlovskyy
07.01.2024