Скрыть сетевой адаптер

Discussion in 'WASM.WIN32' started by StasX4, Jun 21, 2006.

  1. StasX4

    StasX4 New Member

    Blog Posts:
    0
    Joined:
    Aug 7, 2004
    Messages:
    7
    Всем привет!!!



    Изучил немного инфы и переписал перехватчики на С...

    Сейчас перехватывает:

    1) Поцессы

    2) Файлы и папки (через дос эмулятор все показывается, скорее всего из-за специфичности установки глобального хука)
    Code (Text):
    1. LRESULT WINAPI MessageProc(int Code,WPARAM wParam, LPARAM lParam)
    2.     {
    3.     CallNextHookEx(0, Code, wParam, lParam);
    4.     return 0;
    5.     }
    6.  
    7. void SetGlobalHookProc()
    8.     {
    9.     SetWindowsHookEx(WH_GETMESSAGE, (PROC)MessageProc, HInstance, 0);
    10.     Sleep(INFINITE);
    11.     }


    3) Ключи и параметры в реестре



    С глобальным хуком я еще разберусь(т.е. почитаю получше, но возможно буду перехватывать еще и с помощью ZwResumeThread)... Но это не важно...



    Я просто хотел показать, что уже немного разбираюсь в этом деле...



    Вопрос:

    Как скрыть список сетевых подключений(не просто активных или не активных, а тот, который показывает Windows стандартными средставми)???

    Т.е. через какую функцию Windows получает этот список???

    Заранее спасибо за ответ.
     
  2. Bill_Prisoner

    Bill_Prisoner New Member

    Blog Posts:
    0
    Joined:
    May 4, 2005
    Messages:
    238
  3. StasX4

    StasX4 New Member

    Blog Posts:
    0
    Joined:
    Aug 7, 2004
    Messages:
    7
    NtVdmControl я уже перехватывал(сегодня делал)... И эта функция не вызывается... Скорее всего проблема с глобальным перехватом. Но могу и ошибаться...

    Сейчас через оли прохожу по ipconfig...

    Пока наткнулся на GetAdaptersAddresses... Подключил библиотеку к айсу... Перезагружусь и помотрю что и как...
     
  4. StasX4

    StasX4 New Member

    Blog Posts:
    0
    Joined:
    Aug 7, 2004
    Messages:
    7
    Безрезультатно... :dntknw:

    Windows для перечисления сетевых подключений какую-то другую функцию использует...



    Может кто знает???
     
  5. Ms Rem

    Ms Rem New Member

    Blog Posts:
    0
    Joined:
    Apr 17, 2005
    Messages:
    1,057
    Location:
    С планеты "Земля"
    StasX4

    Я не понял, тебе надо скрыть сетевые соединения, или сетевой адаптер?

    Если первое, что для перечисления соединений используются функции GetTcpTable, GetTcpTableEx, GetUdpTable, GetUdpTableEx. Эти функции шлют IOCTL_TCP_QUERY_INFORMATION_EX драйверу tcpip.sys.

    Для перечисления сетевых интерфейсов используется этот же IOCTL, только с другими данными в сопровождающей его структуре. В атаче пример кода получающего список адаптеров в kernel mode.

    Вот пример использования этого кода:


    Code (Text):
    1. status = GetIPSNMPInfo(&SnmpInfo, sizeof(IPSNMPInfo));
    2.  
    3.     if (NT_SUCCESS(status))
    4.     {
    5.         TableSize = sizeof(IPAddrEntry) * SnmpInfo.ipsi_numaddr;
    6.  
    7.         IPAddrTable = ExAllocatePool(PagedPool, TableSize);
    8.  
    9.         status = GetIPAddrTable(IPAddrTable, TableSize);
    10.  
    11.         if (NT_SUCCESS(status))
    12.         {
    13.             ExAcquireFastMutex(&StackMutex);
    14.            
    15.             for(r = 0; r < SnmpInfo.ipsi_numaddr; r++)
    16.             {
    17.                 IPInterfaceInfo InterfaceInfo;
    18.  
    19.                 status = GetIPInterfaceInfo(
    20.                                   IPAddrTable[r].iae_addr,
    21.                                   &InterfaceInfo,
    22.                                   sizeof(IPInterfaceInfo)
    23.                                   );
    24.  
    25.                 if (NT_SUCCESS(status) && InterfaceInfo.iii_addrlength == 6 &&
    26.                     InterfaceInfo.iii_flags == 1 && !netif_find(IPAddrTable[r].iae_addr))
    27.                 {
    28.                     DPRINT("Init rel netif");
    29.  
    30.                     Adapter->IpAddress  = IPAddrTable[r].iae_addr;
    31.                     Adapter->SubnetMask = 0;
    32.                     Adapter->Gateway    = 0;
    33.  
    34.                     Adapter->RelInitialized = TRUE;
    35.                     Adapter->State = NdisMediaStateConnected;
    36.  
    37.                     ProtocolAddAdapter(Adapter);
    38.                     ReferenceAdapter(Adapter);
    39.                     ProtocolStatusAdapter(Adapter, ADAP_STATUS_CONNECT_MEDIA);
    40.  
    41.                     break;
    42.                 }
    43.             }




    [​IMG] 1462531243__tdiq.c
     
  6. StasX4

    StasX4 New Member

    Blog Posts:
    0
    Joined:
    Aug 7, 2004
    Messages:
    7
    @MsRem



    Нужно скрыть список сетевых адаптеров, но в тоже время нужно чтобы они выполняли свою непосредственную функцию.

    Как я понял нужно перехватывать NtDeviceIoControlFile?



    Проверить код сейчас не в силах в связи с отсутствием ddk xp... Но это дело просто времени. Еще раз хочу уточнить момент. Приведенный Вами код показывает список сетевых адаптеров или сетевых соединений?

    Также вопрос есть по поводу хендлов при любом перехвате (файлы, папки, реестр) о том, что когда я получаю хендл, то как по нему определить в случае с папками путь к директории, а в случае с реестром, то путь из ключей???

    А то получается, что скрываются все файлы из всех директорий с одинаковыми наименованиями.



    Заранее спасибо за ответ.
     
  7. StasX4

    StasX4 New Member

    Blog Posts:
    0
    Joined:
    Aug 7, 2004
    Messages:
    7
    Сделал наброски по перехвату API от Iphlpapi... Эмулируя вызов все работает... Вечером доведу код до ума(до хука) и посмотрим будет ли работать... Но хотелось бы перехватывать на низком уровне...
    Code (Text):
    1.  
    2. DWORD WINAPI MyGetAdaptersAddresses(
    3.     ULONG Family,
    4.     DWORD Flags,
    5.     PVOID Reserved,
    6.     PIP_ADAPTER_ADDRESSES pAdapterAddresses,
    7.     PULONG pOutBufLen
    8.     )
    9.     {
    10.     NTSTATUS status;
    11.     PIP_ADAPTER_ADDRESSES Prev,Cur;
    12.  
    13.     status=GetAdaptersAddresses(Family,Flags,Reserved,pAdapterAddresses,pO utBufLen);
    14.     if (NT_SUCCESS(status))
    15.         {
    16.         Prev=NULL;Cur=pAdapterAddresses;
    17.         for(;Cur!=0;)
    18.             {
    19.             if(lstrcmpiW(Cur->Description,L"My Network Interface")==0)
    20.                 {
    21.                 if(Prev==NULL)
    22.                     {
    23.                     if(Cur->Next!=NULL)
    24.                         memcpy(Cur,Cur->Next,sizeof(IP_ADAPTER_ADDRESSES));
    25.                     else
    26.                         status=-1;
    27.                     }
    28.                 else
    29.                     Prev->Next=Cur->Next;
    30.                 break;
    31.                 }
    32.             Prev=Cur;
    33.             Cur=Cur->Next;
    34.             }
    35.         }
    36.     return status;
    37.     }
    38.  
    39. DWORD WINAPI MyGetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen)
    40.     {
    41.     NTSTATUS status;
    42.     PIP_ADAPTER_INFO Prev,Cur;
    43.  
    44.     status=GetAdaptersInfo(pAdapterInfo,pOutBufLen);
    45.     if (NT_SUCCESS(status))
    46.         {
    47.         Prev=NULL;Cur=pAdapterInfo;
    48.         for(;Cur!=0;)
    49.             {
    50.             if(lstrcmpi(Cur->Description,"My Network Interface")==0)
    51.                 {
    52.                 if(Prev==NULL)
    53.                     {
    54.                     if(Cur->Next!=NULL)
    55.                         memcpy(Cur,Cur->Next,sizeof(IP_ADAPTER_INFO));
    56.                     else
    57.                         status=-1;
    58.                     }
    59.                 else
    60.                     Prev->Next=Cur->Next;
    61.                 break;
    62.                 }
    63.             Prev=Cur;
    64.             Cur=Cur->Next;
    65.             }
    66.         }
    67.     return status;
    68.     }
    69.