Jest to port MIPS, który jest obecny w produkowanych przez SerComm routerach i urządzeniach domowych bram (Linksys, Netgear, Cisco) używanych do aktualizacji oprogramowania.
Jest to zarządzane przez scfgmgr
proces nasłuchujący na porcie 32764.
W przypadku dostępu przez telnet dane z prefiksem ScMM
lub MMcS
(w zależności od endianowości systemu) wydają się zwracane.
Jest to bardzo prosty protokół binarny z nagłówkiem (bajty 0xC), po którym następuje ładunek.
Struktura nagłówka:
typedef struct scfgmgr_header_s {
unsigned long magic;
int cmd;
unsigned long len;
} scfgmgr_header;
Jest to oparte na źródłach Cisco GPL (np. Wap4410n_v2.0.1.0_gpl.tgz na wycofanym ftp-eng.cisco.com).
Aby uzyskać aktualne informacje, zobacz opis elvanderb i przykładowy kod Python .
Obecnie słynie z przepełnienia bufora na stercie, które może zapewnić pełny dostęp do urządzenia ( backdoor ). Zostało to odkryte przez Eloi Vanderbeken w Boże Narodzenie 2013 roku, jednak prawdopodobnie było znane chińskim hakerom w 2008 roku ( plik cgi ).
Oto jak działa.
Przepełnienie bufora na podstawie sterty:
Wiadomości:
Tak więc użycie prostej przepełnionej wiadomości może dać wiele interesujących szczegółów:
Może to jednak spowodować zresetowanie konfiguracji, więc nie rób tego w domu.
Oto kilka odwróconych poleceń wykonywanych przez router wykonywanych przez ten port.
nvram
- Konfiguracja zrzutu.
get var
- Uzyskaj konfigurację var
możliwe przepełnienie bufora na podstawie stosu (jeśli zmienna jest kontrolowana przez użytkownika)
set var
- Ustaw zmienną konfiguracji
przepełnienie bufora na stosie, bufor wyjściowy (rozmiar ≈ 0x10000) znajduje się na stosie.
commit nvram
- Przeczytaj nvram / dev / mtdblock / 3 z / tmp / nvram i sprawdź CRC
ustaw nvram (/ dev / mtdblock / 3) z / tmp / nvram; sprawdź CRC
Włącz tryb mostka (nie jestem pewien, nie miałem czasu go przetestować)
nvram_set(“wan_mode”, bridgedonly)
nvram_set(“wan_encap”, 0)
nvram_set(“wan_vpi”, 8)
nvram_set(“wan_vci”, 81)
system(“/usr/bin/killall br2684ctl”)
system(“/usr/bin/killall udhcpd”)
system(“/usr/bin/killall -9 atm_monitor”)
system(“/usr/sbin/rc wan stop >/dev/null 2>&1”)
system(“/usr/sbin/atm_monitor&”)
Pokaż zmierzoną prędkość Internetu (pobieranie / wysyłanie)
cmd (tak, to skorupa…)
specjalne polecenia:
- exit, pa, quit -> quit ... (alive = 0)
- cd: zmień katalog (trochę WTF)
inne polecenia:
- przepełnienie liczb całkowitych w obsłudze standardowego wyjścia (?) nie do wykorzystania, ale nadal ...
- przepełnienie bufora na wyjściu cmd (ponownie ten sam bufor)…
napisz plik
- nazwa pliku w ładunku
- katalog główny = / tmp
- przejście do katalogu może być możliwe (nie przetestowane, ale jest otwarte (sprintf („/ tmp /% s”, ładunek))…)
wersja zwrotna
zwróć modem router ip
przywróć ustawienia domyślne
- nvram_set („restore_default”, 1)
- nvram_commit
czytaj / dev / mtdblock / 0 [-4: -2]
- nie wiem co to jest, nie miałem czasu go przetestować
zrzuć nvram na dysk (/ tmp / nvram) i zatwierdź
Źródło: (pokaz slajdów) Jak Linksys uratował moje Święta Bożego Narodzenia!
Zwykle tego rodzaju porty powinny być oficjalnie obsługiwane przez IANA .
Oto, co odpowiedział UnSpawn na LinuxQuestions w 2007 r. W związku z tym portem:
Jeśli jest to oficjalnie przypisany port IANA (o liczbie od 0 do około 30000), to jego numer powinien odpowiadać usłudze w / etc / services („numer portu usług getent”), pliku usług skanera, takiego jak Nmap lub online baza danych jak ISC Sansa.
Zauważ, że użycie portu efemerycznego można skonfigurować lokalnie za pomocą /proc/sys/net/ipv4/ip_local_port_range
sysctl
. Stara wartość domyślna to 1024-5000, dla serwerów używana jest wartość 32768-61000, a niektóre aplikacje chcą czegoś takiego jak 1025-65535.
Pamiętaj też, że są to statyczne odwzorowania liczby na usługę i chociaż na przykład / etc / services powie, że TCP/22
pasuje do SSH, to nie musi tak być w konkretnej sytuacji,
W przeciwnym razie, jeśli jest to port, którego nie wiesz, który proces się z nim powiązał, to jeśli masz dostęp do hosta, możesz przesłuchać go za pomocą netstat -anp
, lsof -w -n -i protocol:portnumber
lub fuser -n protocol portnumber
. To jest najdokładniejsza metoda,
W przeciwnym razie, jeśli nie masz dostępu do hosta, możesz go przesłuchać, na przykład telnet'ting do niego. To nie jest dokładna metoda, aw przypadku zainfekowanego hosta możesz ostrzec intruza, że jesteś w jego sprawie.
Zobacz też: