• Авторизация


Доступ к упавшим и изолированным сетям. Размышления. 17-06-2012 05:09 к комментариям - к полной версии - понравилось!


grabli (300x300, 10Kb)

Давно задумывался об админском бэкдоре к сильно удаленным, а подчас и изолированных от интернета, сетям. Проблемы последних дней лишь подстегнули моё желание разложить эту тему до полной ясности.

Ключевые слова здесь - модем и dial-up.

Классический телефонный модем сознание отталкивает из-за цены решения и пользования: надо иметь выделенный номер, оплачивать абонентскую плату, время соединения. К тому-же, скорость и надежность не высокие.

3G-модемы обеспечивают существенно более высокие скорость и надежность, о также гибкий выбор тарифов и не зависит от наличия телефонной инфраструктуры. Для 3G-модемов мне не ясно, как обеспечивается работа для входящих соединений, но, думаю, что это и не интересно, если обеспечить управление посредством смс.

 

Управление посредством смс

Пример возможных команд:

  • подключить модем к интернету;
  • установить VPN-соединение (openVPN client) с главным офисом;
  • разорвать соединения (интернет и VPN);
  • диагностические команды (ping, traceroute и пр.)
     

Безопасность при управлении посредством смс

Можно (нужно) проверять номер отправителя, но, говорят, что номер отправителя можно подменить. Поэтому лучше применить ASCII-скремблирование с проверкой даты и, возможно, текущего времени. Еще лучше - применить PGP.

Хорошо бы также предусмотреть ответные смс с подтверждением полученной и/или выполненной смс-команды.

 

Взаимодействие с 3G-модемами

Важные AT-команды:

  • AT+CSCA="+37129202020" (адрес смс сервис-центра)
  • AT+CMGF=1 (формат смс: текстовый)
  • AT+CPMS="SM" (указание на область памяти для хранения смс)

Отправить смс:

  • AT+CMGS="55555555">
    текст смс
    CTRL+Z

Прочитать смс:

  • AT+CMGL="REC UNREAD" (по статусу)
  • AT+CMGR=0 (по индексу)

Как получать уведомление о получении новой смс без постоянного опрашивания модема:

  • AT+CNMI=1,1 (тогда при получении новой  смс в консоль выдается сообщение  +CMTI: "SM",0)
    затем
    Do
           If port.BytesToRead > 0 Then
                    stat = checkport(300)
                    If InStr(1, stat, "+CMTI:") Then
                       ...
                    End If
           End If
     Loop
     
    Function checkport(t As Integer)
            System.Threading.Thread.Sleep(t)
            rxBuff = port.ReadExisting
            checkport = rxBuff
            'Console.WriteLine("Return: " & checkport)
        End Function

Пример простейшего ASCII-скремблирования

 

        'Создаю "ключ"
        For i = 0 To 95
            arrayKey(i) = 95 - i
        Next
        'Вычисляю длину сообщения
        textLen = Len(tbInput.Text)
        ScrambledText = ""
        For i = 1 To textLen
            Num = Asc(Mid(tbInput.Text, i, 1)) - 31 + i
            If Num > 95 Then Num = Num - 95
            ScrambledText = ScrambledText & Chr(arrayKey(Num) + 31)
        Next
 
Тогда для дескремблера написал такой код:
 
        'Создаю "ключ"
        For i = 0 To 95
            arrayKey(95 - i) = i
        Next
        'Вычисляю длину сообщения
        textLen = Len(tbText.Text)
        DescrambledText = ""
        For i = 1 To textLen
            Num = Asc(Mid(tbText.Text, i, 1)) - 31 + i 
            If Num > 95 Then Num = Num - 95
            DescrambledText = DescrambledText & Chr(arrayKey(Num) + 31)
        Next 
 
Вместо заключения
 
Задача реально решаема, осталось найти время и желание, чтобы ее проверить на практике. 
 
Практические заметки
 
Huawei E1750 после подключения создает 3 порта:
  • Vodafone Mobile Broadband Modem (Huawei)
  • Vodafone Mobile Broadband Secondary Port Modem (Huawei)
  • Vodafone Mobile Broadband Diagnostics Port (Huawei)

Для данной темы применим лишь Secondary Port Modem.

вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Доступ к упавшим и изолированным сетям. Размышления. | a1addin - Письма себе | Лента друзей a1addin / Полная версия Добавить в друзья Страницы: раньше»