Huawei: настройка VXLAN фабрики

Привет Хабр!

В данной статье хочу поделиться настройкой VXLAN фабрики на оборудовании Huawei. На Хабре, да и на других ресурсах довольно подробна описана технология, как работает control plan, data plane, архитектура и т.д., поэтому в этой статье будет приведена настройка коммутатора с некоторыми пояснениями. Любая критика приветствуется. Для тестирования конфигурации появилась возможность добавить в EVE-NG коммутатор Huawei CE12800. За подробностями сюда и сюда. Data plane к сожалению там работает плохо, но control plane хорошо и не поддерживается часть функционала (m-lag, L3VXLAN например).

Общее описание схемы и подготовка underlay

В фабрике будет использоваться 2 Spine и 4 Leaf (2 из которых объединены в m-lag пару). Между Spine и Leaf коммутаторами используются point to point подсети с 31 маской и увеличен MTU. Используется симметричный IRB. Spine коммутаторы так же будут выполнять роль BGP route reflector. Инкапсуляция и деинкапсуляция будет производиться на Leaf коммутаторах.

Начну с настройки m-lag пары leaf коммутаторов, для правильной работы нужен keepalive линк и peer линк. По peer линку может идти полезная нагрузка поэтому необходимо учитывать полосу пропускания этого линка. Так же следует учитывать, что m-lag в исполнении Huawei накладывает некоторые ограничения, например нельзя построить ospf соседство через агрегированный интерфейс (или можно но с костылями):

dfs-group 1  priority 150  source ip 192.168.1.1 # IP адрес keepalive линка # stp bridge-address 0039-0039-0039 #для правильной работы STP задаем одинаковый bridge id # lacp m-lag system-id 0010-0011-0012 #задаем system id для LACP # interface Eth-Trunk0 #создаем peer линк  trunkport INTERFACE #добавляем интерфейс в LAG   stp disable  mode lacp-static  peer-link 1 # interface Eth-Trunk1 #пример агрегированного интерфейса в сторону сервера например   mode lacp-static  dfs-group 1 m-lag 1

Проверяем, что m-lag пара собралась:

<Leaf11>disp dfs-group 1 m-lag *                : Local node Heart beat state : OK Node 1 *   Dfs-Group ID   : 1   Priority       : 150   Address        : ip address 192.168.1.1   State          : Master   Causation      : -   System ID      : fa1b-d35c-a834   SysName        : Leaf11   Version        : V200R005C10SPC800   Device Type    : CE8861EI Node 2   Dfs-Group ID   : 1   Priority       : 120   Address        : ip address 192.168.1.2   State          : Backup   Causation      : -   System ID      : fa1b-d35c-a235   SysName        : Leaf12   Version        : V200R005C10SPC800   Device Type    : CE8861EI    <Leaf11>disp dfs-group 1 node 1 m-lag brief * - Local node  M-Lag ID     Interface      Port State    Status                Consistency-check        1     Eth-Trunk 1    Up            active(*)-active      --

Пример настройки интерфейса внутри фабрики:

interface GE1/0/0  undo portswitch  #переводим интерфейс в режим L3  undo shutdown  #административно включаем интерфейс  ip address 192.168.0.1 31  ospf network-type p2p #меняем тип OSPF интерфейса на point-to-point  mtu 9200 #увеличиваем MTU интерфейса

В качестве underlay протокола маршрутизации используется OSPF:

ospf 1 router-id 10.1.1.11  area 0.0.0.0   network 10.1.1.1 0.0.0.0 #анонсируем anycast lo только с m-lag пары   network 10.1.1.11 0.0.0.0   network 192.168.0.0 0.0.255.255

Так же в качестве протокола маршрутизации можно использовать два BGP процесса, один для underlay маршрутизации и второй для overlay маршрутизации.

bgp AS_UNDERLAY #процесс для underlay маршрутизации  <settings> bgp AS_OVERLAY instance EVPN_NAME #процесс для overlay маршрутизации  <settings>

С базовыми настройками закончили, проверим, что OSPF собрался и маршруты балансируются между Spine коммутаторами.

<Leaf11>disp ospf peer brief OSPF Process 1 with Router ID 10.1.1.11                    Peer Statistic Information Total number of peer(s): 2  Peer(s) in full state: 2 -----------------------------------------------------------------------------  Area Id         Interface                  Neighbor id          State  0.0.0.0         GE1/0/0                    10.1.1.100           Full  0.0.0.0         GE1/0/1                    10.1.1.101           Full -----------------------------------------------------------------------------

Соседство собралось, проверим маршрутную информацию:

<Leaf11>disp ip routing-table protocol ospf Proto: Protocol        Pre: Preference Route Flags: R - relay, D - download to fib, T - to vpn-instance, B - black hole route ------------------------------------------------------------------------------ _public_ Routing Table : OSPF          Destinations : 11       Routes : 13  OSPF routing table status : <Active>          Destinations : 8        Routes : 10  Destination/Mask    Proto   Pre  Cost        Flags NextHop         Interface         10.1.1.2/32  OSPF    10   2             D   192.168.0.8     GE1/0/1                     OSPF    10   2             D   192.168.0.0     GE1/0/0        10.1.1.3/32  OSPF    10   2             D   192.168.0.8     GE1/0/1                     OSPF    10   2             D   192.168.0.0     GE1/0/0       10.1.1.12/32  OSPF    10   2             D   192.168.0.8     GE1/0/1                     OSPF    10   2             D   192.168.0.0     GE1/0/0      10.1.1.100/32  OSPF    10   1             D   192.168.0.0     GE1/0/0      10.1.1.101/32  OSPF    10   1             D   192.168.0.8     GE1/0/1

Подготовка overlay

Для начала необходимо глобально включить поддержку EVPN на коммутаторе:

evpn-overlay enable

Spine коммутаторы выполняют роль Route-reflector. Плюс нужно добавить строку undo policy vpn-target в соответствующей address family, чтобы Spine смог принять все маршруты и переслать их клиентам. Соседство строим на loopback адресах.

bgp 65000  group leafs internal  peer leafs connect-interface LoopBack0  peer 10.1.1.11 as-number 65000  peer 10.1.1.11 group leafs  peer 10.1.1.12 as-number 65000  peer 10.1.1.12 group leafs  peer 10.1.1.2 as-number 65000  peer 10.1.1.2 group leafs  peer 10.1.1.3 as-number 65000  peer 10.1.1.3 group leafs  #  ipv4-family unicast   undo peer leafs enable   undo peer 10.1.1.11 enable   undo peer 10.1.1.12 enable   undo peer 10.1.1.2 enable   undo peer 10.1.1.3 enable  #  l2vpn-family evpn   undo policy vpn-target   peer leafs enable   peer leafs reflect-client   peer 10.1.1.11 enable   peer 10.1.1.11 group leafs   peer 10.1.1.12 enable   peer 10.1.1.12 group leafs   peer 10.1.1.2 enable   peer 10.1.1.2 group leafs   peer 10.1.1.3 enable   peer 10.1.1.3 group leafs

На Leaf коммутаторах настраиваем нужный address family. Для m-lag пары хочется сделать политику подменяющую next-hop на anycast loopback ip адрес, но без такой политики все работает. Huawei подменяет next-hop адрес на адрес который указан в качестве source ip адреса интерфейса NVE. Но если вдруг возникнут проблемы с автоматической подменой всегда можно навесить политику руками:

bgp 65000  group rr internal  peer rr connect-interface LoopBack0  peer 10.1.1.100 as-number 65000  peer 10.1.1.100 group rr  peer 10.1.1.101 as-number 65000  peer 10.1.1.101 group rr  #  ipv4-family unicast   undo peer rr enable   undo peer 10.1.1.100 enable   undo peer 10.1.1.101 enable  #  l2vpn-family evpn   policy vpn-target   peer rr enable   peer 10.1.1.100 enable   peer 10.1.1.100 group rr   peer 10.1.1.101 enable   peer 10.1.1.101 group rr

Проверяем, что overlay control plane собрался:

<Leaf11>disp bgp evpn peer  BGP local router ID        : 10.1.1.11  Local AS number            : 65000  Total number of peers      : 2  Peers in established state : 2    Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State  PrefRcv   10.1.1.100      4       65000    12829    12811     0 0186h15m Established        0   10.1.1.101      4       65000    12844    12822     0 0186h15m Established        0    <Leaf11>disp bgp evpn peer 10.1.1.100 verbose #лишние строки удалены для сокращения вывода  BGP Peer is 10.1.1.100,  remote AS 65000  Type: IBGP link  Update-group ID: 2  Peer optional capabilities:   Peer supports bgp multi-protocol extension   Peer supports bgp route refresh capability   Peer supports bgp 4-byte-as capability   Address family L2VPN EVPN: advertised and received

Подготовка L2 VXLAN

Сперва создадим NVE интерфейс отвечающий за инкапсуляцию/деинкапсуляцию пакетиков:

interface Nve1 #создаем NVE интерфейс  source 10.1.1.1 #для m-lag пары используем anycast ip адрес  mac-address 0000-5e00-0199 #обязательно для m-lag пары на обоих коммутаторах настраиваем одинаковый MAC адрес, это необходимо для работы L3 VXLAN

Для организации L2 VXLAN необходимо создать bridge-domain и примапить к нему vlan, l2 подинтефейс или интерфейс целиком. К одному bridge-domain могут быть примаплены разные VLANs.

bridge-domain 150 #создаем bridge-domain vlan 150 access-port interface Eth-Trunk12 #можно мапить vlan в конфигурации bridge-domain, а можно в создавать l2 подинтерфейс  vxlan vni 22150 #определяем vni  evpn #создаем evpn instance   route-distinguisher 10.1.1.11:22150   vpn-target 65000:22150 export-extcommunity   vpn-target 65000:23500 export-extcommunity #этот rt нужен в будущем для L3 VXLAN   vpn-target 65000:22150 import-extcommunity # interface GE1/0/9.150 mode l2 #создаем подинтерфейс  encapsulation [default,dot1q,untag,qinq] #выбираем тип инкапсуляции  bridge-domain 150 #мапим к нужному bridge-domain # interface Nve1   vni 22150 head-end peer-list protocol bgp #определяем, что для BUM трафика будет использоваться ingress replication list с автообнаружением по BGP

Проделываем такую же работу на остальных коммутаторах и проверяем работу. На коммутаторах должны появиться EVPN маршруты типа 3:

<Leaf11>disp evpn vpn-instance name 150 verbose  VPN-Instance Name and ID : 150, 1   Address family evpn   Route Distinguisher : 10.1.1.11:22150   Label Policy        : label per instance   Per-Instance Label  : 16,17   Export VPN Targets  : 65000:22150 65000:23500   Import VPN Targets  : 65000:22150 # <Leaf11>disp bgp evpn vpn-instance 150 routing-table inclusive-route  BGP Local router ID is 10.1.1.11  Status codes: * - valid, > - best, d - damped, x - best external, a - add path,                h - history,  i - internal, s - suppressed, S - Stale                Origin : i - IGP, e - EGP, ? - incomplete    EVPN-Instance 150:  Number of Inclusive Multicast Routes: 3        Network(EthTagId/IpAddrLen/OriginalIp)                 NextHop  *>    0:32:10.1.1.1                                          0.0.0.0  *>i   0:32:10.1.1.2                                          10.1.1.2  * i                                                          10.1.1.2

Посмотрим попристальнее на анонс полученный от соседа:

<Leaf11>disp bgp evpn vpn-instance 150 routing-table inclusive-route 0:32:10.1.1.2   BGP local router ID : 10.1.1.11  Local AS number : 65000    EVPN-Instance 150:  Number of Inclusive Multicast Routes: 2  BGP routing table entry information of 0:32:10.1.1.2:  Route Distinguisher: 10.1.1.2:22150  Remote-Cross route  Label information (Received/Applied): 22150/NULL #видим нужный нам vni  From: 10.1.1.100 (10.1.1.100)  Route Duration: 7d19h17m35s  Relay Tunnel Out-Interface: VXLAN  Original nexthop: 10.1.1.2  Qos information : 0x0  Ext-Community: RT <65000 : 22150>, RT <65000 : 23500>, Tunnel Type <VxLan>  AS-path Nil, origin incomplete, localpref 100, pref-val 0, valid, internal, best, select, pre 255  Originator: 10.1.1.2  PMSI: Flags 0, Ingress Replication, Label 0:0:0(22150), Tunnel Identifier:10.1.1.2  Cluster list: 10.1.1.100  Route Type: 3 (Inclusive Multicast Route)  Ethernet Tag ID: 0, Originator IP:10.1.1.2/32  Not advertised to any peer yet

BUM трафик должен ходить, можно приступать к проверке связности между хостами. Для этого с хоста VM1 пропингуем хост VM2:

ubuntu@test-vxlan-01:~$ ping 192.168.50.3 PING 192.168.50.3 (192.168.50.3) 56(84) bytes of data. 64 bytes from 192.168.50.3: icmp_seq=1 ttl=64 time=0.291 ms --- 192.168.50.3 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.291/0.291/0.291/0.000 ms # ubuntu@test-vxlan-01:~$ ip neigh 192.168.50.3 dev eth0 lladdr 00:15:5d:65:87:26 REACHABLE

В это время на сети должны появиться анонсы 2 типа. Проверим:

<Leaf11>disp bgp evpn vpn-instance 150 routing-table mac-route  BGP Local router ID is 10.1.1.11  Status codes: * - valid, > - best, d - damped, x - best external, a - add path,                h - history,  i - internal, s - suppressed, S - Stale                Origin : i - IGP, e - EGP, ? - incomplete   EVN-Instance 150:  Number of Mac Routes: 3        Network(EthTagId/MacAddrLen/MacAddr/IpAddrLen/IpAddr)  NextHop *>i   0:48:0015-5d65-8726:0:0.0.0.0                          10.1.1.2  * i                                                          		10.1.1.2  *>    0:48:0015-5df0-ed07:0:0.0.0.0                          0.0.0.0 

Посмотрим анонс пристальнее:

<Leaf11>disp bgp evpn vpn-instance 150 routing-table mac-route 0:48:0015-5d65-8726:0:0.0.0.0   BGP local router ID : 10.1.1.11  Local AS number : 65000   EVN-Instance 150:  Number of Mac Routes: 2 #два маршрута, потому что приходит от двух RR  BGP routing table entry information of 0:48:0015-5d65-8726:0:0.0.0.0:  Route Distinguisher: 10.1.1.2:22150  Remote-Cross route  Label information (Received/Applied): 22150/NULL  From: 10.1.1.100 (10.1.1.100)  Route Duration: 0d00h07m19s  Relay Tunnel Out-Interface: VXLAN  Original nexthop: 10.1.1.2  Qos information : 0x0  Ext-Community: RT <65000 : 22150>, RT <65000 : 23500>, Tunnel Type <VxLan>  AS-path Nil, origin incomplete, localpref 100, pref-val 0, valid, internal, best, select, pre 255  Route Type: 2 (MAC Advertisement Route)  Ethernet Tag ID: 0, MAC Address/Len: 0015-5d65-8726/48, IP Address/Len: 0.0.0.0/0, ESI:0000.0000.0000.0000.0000  Not advertised to any peer yet

Проверяем CAM таблицу коммутатора:

<Leaf11>disp mac-add bridge-domain 150 Flags: * - Backup        # - forwarding logical interface, operations cannot be performed based            on the interface. BD   : bridge-domain   Age : dynamic MAC learned time in seconds ------------------------------------------------------------------------------- MAC Address    VLAN/VSI/BD   Learned-From        Type                Age ------------------------------------------------------------------------------- 0015-5d65-8726 -/-/150       10.1.1.2      evn                   - 0015-5df0-ed07 -/-/150       Eth-Trunk1.150      dynamic             450 ------------------------------------------------------------------------------- Total items: 2

Подготовка L3 VXLAN

Настало время выпустить хосты за пределы своей подсети, для этого будем использовать distributed gateway.

Для начала создадим нужный VRF:

ip vpn-instance EVPN  ipv4-family   route-distinguisher 10.1.1.11:23500   vpn-target 65000: 23500 export-extcommunity evpn   vpn-target 65000: 23500 import-extcommunity evpn  vxlan vni 23500

В конфигурацию BGP Leaf коммутаторов добавляем анонс IRB:

bgp 65000 l2vpn-family evpn   peer rr advertise irb

Создаем L3 интерфейс для маршрутизации в нужном VRF:

interface Vbdif150 #номер должен совпадать с номером bridge-domain  ip binding vpn-instance EVPN  ip address 192.168.50.254 24  mac-address 0000-5e00-0101  vxlan anycast-gateway enable  arp collect host enable #генерация маршрута второго типа на основании arp записи

Повторяем конфигурации на других Leaf коммутаторах и проверяем:

<Leaf11>disp ip vpn-instance SDC-EVPN   VPN-Instance Name               RD                    Address-family   EVPN                        10.1.1.11:23500            IPv4 <Leaf11>disp evpn vpn-instance name __RD_1_10.1.1.11_23500__ verbose  VPN-Instance Name and ID : __RD_1_10.1.1.11_23500__, 2   Address family evpn   Route Distinguisher : 10.1.1.11:23500   Label Policy        : label per instance   Per-Instance Label  : 17,18   Export VPN Targets  : 65000 : 23500   Import VPN Targets  : 65000 : 23500

На некоторых моделях коммутаторов (лучше свериться с официальной документацией) необходимо создание специального сервисного интерфейса для продвижения L3 VXLAN трафика. Полоса этого интерфейса должна быть в два раза больше пиковой полосы для L3 VXLAN трафика. При наличии большого количества Vbdif интерфейсов (более 2 тысяч) требуется создание дополнительных сервисных интерфейсов.

interface Eth-TrunkXXX  service type tunnel  trunkport 40GE1/1/1

На этом настройка L3 VXLAN завершена. Проверим доступность между хостами из разных подсетей:

ubuntu@test-vxlan-01:~$ ping 192.168.51.1 PING 192.168.51.1 (192.168.51.1) 56(84) bytes of data. 64 bytes from 192.168.51.1: icmp_seq=1 ttl=63 time=0.508 ms  --- 192.168.51.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.508/0.508/0.508/0.000 ms

Связность есть, теперь проверим маршрутную информацию:

<Leaf11>disp arp interface Vbdif 150 ARP timeout:1200s ARP Entry Types: D - Dynamic, S - Static, I - Interface, O - OpenFlow EXP: Expire-time  src: Source ip   dst: Destination ip  IP ADDRESS      MAC ADDRESS    EXP(M) TYPE/VLAN/CEVLAN   INTERFACE ---------------------------------------------------------------------------------------- 192.168.50.254  0000-5e00-0101        I                  Vbdif150 192.168.50.1    0015-5df0-ed07   15   D/150/-            Eth-Trunk1.150 ---------------------------------------------------------------------------------------- Total:2         Dynamic:1       Static:0    Interface:1    OpenFlow:0 Redirect:0 # <Leaf1>disp bgp evpn vpn-instance 150 routing-table mac-route  BGP Local router ID is 10.1.1.11  Status codes: * - valid, > - best, d - damped, x - best external, a - add path,                h - history,  i - internal, s - suppressed, S - Stale                Origin : i - IGP, e - EGP, ? - incomplete   EVN-Instance 150:  Number of Mac Routes: 7        Network(EthTagId/MacAddrLen/MacAddr/IpAddrLen/IpAddr)  NextHop  *>    0:48:0000-5e00-0101:0:0.0.0.0                          0.0.0.0  * i                                                          10.1.1.2  * i                                                          10.1.1.2  *>i   0:48:0015-5d65-8726:32:192.168.50.3                    10.1.1.2  * i                                                          10.1.1.2  *>    0:48:0015-5df0-ed07:0:0.0.0.0                          0.0.0.0  *>    0:48:0015-5df0-ed07:32:192.168.50.1                    0.0.0.0 

Появились маршруты второго типа включающие в себя IP адреса. Теперь проверим перетекли ли маршруты в нужный VRF:

<Leaf11>disp bgp evpn vpn-instance __RD_1_10.1.1.11_23500__ routing-table mac-route  BGP Local router ID is 10.1.1.11  Status codes: * - valid, > - best, d - damped, x - best external, a - add path,                h - history,  i - internal, s - suppressed, S - Stale                Origin : i - IGP, e - EGP, ? - incomplete   EVN-Instance __RD_1_10.1.1.11_23500__:  Number of Mac Routes:         Network(EthTagId/MacAddrLen/MacAddr/IpAddrLen/IpAddr)  NextHop *>i   0:48:0015-5d65-8726:32:192.168.50.3                    10.1.1.2  * i                                                          10.1.1.2 *>i   0:48:0015-5df0-ed08:32:192.168.51.2                    10.1.1.3  * i                                                          10.1.1.3 # <leaf11>disp bgp evpn vpn-instance __RD_1_10.1.1.11_23500__ routing-table mac-route 0:48:0015-5d65-8726:32:192.168.50.3   BGP local router ID : 10.1.1.11  Local AS number : 65000   EVN-Instance __RD_1_10.1.1.11_23500__:  Number of Mac Routes: 2  BGP routing table entry information of 0:48:0015-5d65-8726:32:192.168.50.3:  Route Distinguisher: 10.1.1.2:23500  Remote-Cross route  Label information (Received/Applied): 22150 23500/NULL #добавился L3 VNI  From: From: 10.1.1.100 (10.1.1.100)  Route Duration: 7d08h48m44s  Relay Tunnel Out-Interface: VXLAN  Original nexthop: 10.1.1.2  Qos information : 0x0  Ext-Community: RT <65000 : 22150>, RT <65000 : 23500>Tunnel Type <VxLan>, Router's MAC <3864-0111-1200> #в качестве MAC адреса используется MAC адрес NVE интерфейса VTEPа  AS-path Nil, origin incomplete, localpref 100, pref-val 0, valid, internal, best, select, pre 255  Route Type: 2 (MAC Advertisement Route)  Ethernet Tag ID: 0, MAC Address/Len: 0015-5d65-8726/48, IP Address/Len: 192.168.50.3/32, ESI:0000.0000.0000.0000.0000  Not advertised to any peer yet

Заключение

В данной статье я попытался описать процесс настройки EVPN VXLAN фабрики на базе оборудования Huawei и привести некоторые команды необходимые в процессе отладки.

Спасибо за внимание!

ссылка на оригинал статьи https://habr.com/ru/post/552946/

Почему античитерское ПО блокирует инструменты разгона?

Кто из нас не пользовался читами в играх? Whosyourdaddy, thereisnospoon, hesoyam — помните? Но обращали ли вы внимание, почему, когда игрок пытается разогнать процессор или изменить настройки ПО, срабатывают некоторые программы против читеров вплоть до блокировки? В этой статье, которая будет полезна для читателей, не обладающих глубокими техническими знаниями в области использования ПО для читеров, против читеров, драйверов и того, что с ними связано, попробуем разобраться почему инструменты мониторинга/разгона блокируются античитерским ПО.


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

Из соображений удобства конечные пользователи могут переработать код под свою ответственность. Непродуманные действия могут привести к повреждению системы. 

В нашем случае код для переработки берётся с таких сайтов, как kernelmode.info, OSR Online, и других. Особую обеспокоенность вызывают используемые таким программным обеспечением драйверы. Если бы я захотел причинить вред большому количеству людей (отличной мишенью для моей атаки могли бы стать геймеры и компьютерные энтузиасты), я бы в первую очередь использовал драйверы, входящие в состав некоторых программных инструментов, о которых расскажу далее. В статье я пишу только о некоторых драйверах, на самом деле их гораздо больше — кодонезависимыми десятки, если не сотни. Драйверы, о которых пойдёт речь, использовались сообществом читеров ранее или используются сейчас. Попытаемся понять, зачем вообще в такое программное обеспечение включаются драйверы.

Примечание: мы не имеем никакого отношения к издателям игр или поставщикам ПО против читеров и не сотрудничаем с ними ни на платной, ни на бесплатной основе.

Зачем нужны драйверы?

За последние 5–10 лет в связи с развитием индустрии профессионального гейминга и повышением технических требований к запуску определённых игр всё большую популярность приобретают инструменты мониторинга оборудования и повышения тактовой частоты процессора. Такие инструменты опрашивают различные компоненты системы, такие как GPU, CPU, датчики температуры и прочее, однако обычному пользователю получить эту информацию не так просто. 

Например, чтобы отправить запрос на цифровой датчик температуры для получения данных о температуре процессора, приложение должно выполнить чтение из моделезависимого регистра процессора. Доступ к таким регистрам процессора и внутренним механизмам чтения/записи возможен только с более высоким уровнем привилегий, например ring0 (на этом уровне работают драйверы). Моделезависимый регистр процессора (MSR) — это тип регистра, представляющий собой часть набора команд x86. Как следует из названия регистра, на процессорах одной модели имеются одни регистры, на процессорах другой модели — другие, что делает их моделезависимыми. Такие регистры используются в первую очередь для хранения специальной информации о платформе и особенностях процессора; они также могут использоваться для мониторинга показателей производительности или значений тепловых датчиков. 

Intel приняла решение включить в набор инструкций x86 две инструкции, позволяющие привилегированному ПО (операционной или другой системе) считывать или записывать данные в MSR. Инструкции rdmsr и wrmsr позволяют привилегированной программе-агенту запрашивать или изменять состояние одного из таких регистров. Для процессоров Intel и AMD имеется обширный перечень доступных MSR, которые можно найти в соответствующих SDM/APM. Тут важно отметить, что большая часть информации в таких моделезависимых регистрах не должна меняться никакими задачами — не важно, привилегированные они или нет. Но даже при написании драйверов устройств необходимость в этом возникает крайне редко.

Многие драйверы, создаваемые с целью программного мониторинга оборудования, позволяют задаче без привилегий (если под привилегиями понимать привилегии администратора) считывать/записывать произвольные MSR. 

Как это работает? В драйверах реализуется особый коммуникационный режим, при котором они могут читать привилегированные данные из непривилегированного приложения. Повторяю (и это важно), что большинство драйверов ПО для мониторинга оборудования/повышения тактовой частоты процессора, поставляемых в составе клиентского приложения, имеют гораздо больше функциональных возможностей (не всегда, впрочем, нужных), к которым можно получить доступ через такой коммуникационный протокол. 

Клиентское приложение, например десктопное приложение CPUZ, использует функцию WinAPI под названием DeviceIoControl. Говоря простым языком, CPUZ вызывает функцию DeviceIoControl с помощью известного разработчикам управляющего кода ввода/вывода, чтобы выполнить операцию чтения MSR, например, данных накристального цифрового датчика температуры. 

Вы скажете: ну и что? В чём проблема? Проблема в том, что эти драйверы реализуют дополнительную функциональность за рамками своих задач и делают это через тот же самый интерфейс — речь идёт, например, о записи в MSR или в физическую память.

Но, опять скажете вы, если коды известны только разработчикам, в чём же проблема? Плодотворным начинанием будет реверс-инжинеринг: всё, что нужно сделать злоумышленнику, — получить копию драйвера, загрузить её в любой дизассемблер, скажем, в IDA Pro, и проанализировать обработчик IOCTL

Ниже представлен код IOCTL в драйвере CPUZ, используемый для отправки двух байтов с двух различных портов ввода/вывода, — 0xB2 (широковещательный SMI) и 0x84 (выходной порт 4). Вот это уже становится интересно, так как SMI можно заставить использовать порт 0xB2, позволяющий войти в режим управления системой. Не хочу утверждать, что с этой функцией можно натворить дел, просто отмечаю интересную особенность. Порт SMI используется в первую очередь для отладки.

Теперь давайте рассмотрим поставляемый Intel драйвер, с его помощью можно совершать любые действия, о которых злоумышленник может только мечтать.

Недокументированный драйвер Intel

Этот драйвер был включён в состав инструмента диагностики Intel. С его помощью можно выполнять множество различных операций, из них наиболее проблемная — операция записи непосредственно на страницу памяти в физической памяти непривилегированным приложением.

Примечание: под непривилегированным приложением понимается приложение, выполняемое с низким уровнем привилегий, — ring-3; между тем, чтобы выполнить запрос DeviceIoControl, требуются права администратора.

Помимо прочего, драйвер предоставляет непосредственный доступ к порту ввода-вывода для записи, а эта операция должна быть доступна только привилегированным приложениям. Доступом к записи вполне можно злоупотребить во вред конечному пользователю. Вредоносная программа-агент может использовать драйвер, чтобы запустить «отказ в обслуживании» (denial-of-service) посредством записи в порт ввода-вывода, такая запись может использоваться для аппаратного сброса процессора.

В диагностическом инструменте Intel такие операции имеют определённый смысл. Однако драйвер подписан, входит в состав официально поставляемого инструмента, и, если он попадёт в нечистоплотные руки, его можно использовать для причинения вреда в нашем случае игровым приложениям. Возможность чтения и записи в физическую память означает, что злоумышленник может получить доступ к памяти игры в обход традиционных методов доступа, например, без получения доступа к процессу и без использования Windows API для чтения виртуальной памяти. Злоумышленнику, конечно, придётся постараться, но разве когда-нибудь такая мелочь останавливала мотивированного человека? 

Мне всё равно, я не пользуюсь этим диагностическим инструментом, но как быть другим пользователям? Рассмотрим ещё два инструмента, которые задействуют уязвимые драйверы.

HWMonitor

Этот инструмент неоднократно обсуждался на различных форумах по разгону и общей диагностике. Он предназначен для тех пользователей, у которых на компьютере не хватает вентиляторов, предотвращающих перегрев. Этот инструмент также содержит драйвер с довольно проблематичной функциональностью. 

На скриншоте ниже показан другой метод чтения части физической памяти через функцию MmMapIoSpace. Эта функция часто используется злоумышленниками под видом доверенного инструмента для мониторинга оборудования. А как обстоят дела с записью в моделезависимые регистры процессора? Этот инструмент не предполагает запись ни в какие MSR, тем не менее, правильно переработанный код позволяет записывать данные в любой моделезависимый регистр процессора. Ниже приводятся два примера различных блоков IOCTL в HWMonitor.

Отметим, что используемый HWMonitor драйвер — это тот же самый драйвер, который использует CPUZ! ПО против читерства, естественно, может просто запретить запуск HWMonitor, но у злоумышленника есть выход — он может с таким же успехом воспользоваться драйвером из CPUZ

Эта проблема уже значительно серьёзнее, поскольку, как было сказано выше, моделезависимые регистры процессора предназначены для чтения/записи только системным программным обеспечением. 

Возможность доступа к таким регистрам через любой непроверенный интерфейс дает злоумышленникам возможность изменять системные данные, к которым у них ни в коем случае не должно быть доступа. Через эту уязвимость злоумышленники могут обходить защитные механизмы, устанавливаемые третьими сторонами, например ПО против читеров. Такое ПО может фиксировать обратные вызовы, например ExCbSeImageVerificationDriverInfo, что позволяет драйверу получать информацию о загруженном драйвере. При помощи доверенного драйвера злоумышленникам удаётся скрывать свои действия. Античитерское ПО логирует/отмечает/делает дамп довольно большого количество подписанных пользователями драйверов, но всё же считает доверенными некоторые драйверы из состава WHQL или продуктов Intel. К слову, античитерское ПО само использует операцию обратного вызова, чтобы запретить загрузку драйверов, например упакованного драйвера для CPUZ (иногда античитерское ПО не запрещает загрузку драйвера, а просто фиксирует факт его наличия, даже если имя драйвера было изменено).

MSI Afterburner

Теперь вам должно быть понятно, почему загрузка многих таких драйверов блокируется античитерским ПО. Про MSI Afterburner лучше всего почитать в exploit-db. С ним проблемы те же, что и с вышеописанными драйверами, и для сохранения целостности системы и игровых приложений загрузку этого ПО разумно будет запретить.

Справедливости ради следует сказать, что описанные уязвимости уже устранены, но я всего лишь привёл пример того, как неожиданно могут повернуться многие, казалось бы, полезные инструменты. Несмотря на то, что MSI отреагировала соответствующим образом и обновила Afterburner, были обновлены не все инструменты OC/мониторинга.

Заключение

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

Если вас не смущает, что во время игры не будет работать инструмент мониторинга оборудования, просто отключите его и играйте в своё удовольствие. 

Читеры стали задействовать такие драйверы ещё в 2015–2016 годах, а возможно, и раньше; однако до этого времени код с демонстрацией на крупных читерских форумах не публиковался. Блокировать драйверы необходимо, чтобы запретить обход античитерского ПО через доверенный сторонний драйвер и защитить игру от хакеров, использующих такой метод атаки. 

Я хорошо понимаю, что лишиться возможности пользоваться средствами мониторинга — не очень приятная перспектива, но было бы несправедливо всю вину возлагать на античитерское ПО. Возможно, в сложившейся ситуации больше виноваты поставщики программного обеспечения с опасным кодом, подвергающим систему риску во время игры. Если бы злоумышленником был я, то, несомненно, в первую очередь задумался об использовании такого драйвера, чтобы скомпрометировать систему.

Могу подсказать компаниям хорошее решение: нужно просто удалить ненужный код, отвечающий, например, за отображение физической памяти, запись в моделезависимые регистры процессора, запись в управляющие регистры и прочее. Естественно, после этого возникнет проблема доступа к данным датчиков температуры только для чтения и других связанных с ними компонентов, но она, полагаю, не так трудна и вполне разрешима.

Как разработчики игр создают и внедряют читы в код игры, чтобы тестирование геймплея осуществлялось проще, так и у нас в SkillFactory мы внедряем новые элементы в программы, чтобы обучение было продуктивнее, а студенты получали актуальные знания. Если вам интересна сфера тестирования — обратите внимание на наш курс QA-инженер на JAVA. Если же вы хотите создавать свои игровые миры — у нас есть курс разработчик игр на Unity. Приходите, будет сложно, но занимательно.

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы

ссылка на оригинал статьи https://habr.com/ru/company/skillfactory/blog/552392/

Три доступных «полочника» — как может выглядеть такая акустика, и что находится у нее «под капотом»

Ранее мы рассказали о трех «бюджетных» парах систем полочного типа. Этот материал набрал более восемнадцати тысяч просмотров и около трех десятков комментариев, поэтому сегодня продолжим анализировать базовый ценовой сегмент полочников и посмотрим на обзоры моделей, которые идут бок о бок с теми, что попали в предыдущую подборку.

На фотографии: Arslab Stereo One. Источник: Audiomania.ru
На фотографии: Arslab Stereo One. Источник: Audiomania.ru

[27 900] Arslab Stereo One — крупная и «уверенная в себе» полочная система. По габаритам и весу она может сравниться с ELAC Debut B6.2, о которых мы говорили в прошлый раз. Одна колонка Arslab Stereo One весит 7,1 кг, что на 300 грамм легче, однако она и чуть выше [390 мм], плюс — обладает аналогичным по диаметру НЧ-динамиком [16,5 см]. Он снабжен бумажным диффузором, выполненным по технологии холодного прессования, чтобы снизить вероятность искажений на высокой громкости до ничтожного минимума. При этом колонке достался относительно крупный ВЧ-динамик [22 мм] с шелковым куполом и внимательно подобранная начинка. Инженеры смогли задействовать компоненты по максимуму, добились сбалансированного и детального звучания, обеспечили универсальный характер применения системы. Stereo One по мощности подходит для работы в небольших и средних комнатах до 22 квадратов и может выполнять роль боковых или тыловых колонок домашнего кинотеатра.

Этот бренд уже длительное время присутствует на российском и европейском рынке. Почитать об истории его запуска и философии разработки акустики можно в нашем блоге на Хабре — мы говорили об этом еще в 2016 году [один, два, три], а линейка бренда за эти годы прошла через некоторое количество обновлений [новые модели и их обзоры собраны здесь].


[29 490] Monitor Audio Bronze 50 6G — самая компактная модель шестой серии акустики этого бренда. Весит колонка всего пять килограмм, а ее высота достигает 265 мм. Понятное дело, что такую систему сложно обеспечить крупным низкочастотным динамиком — здесь он пятидюймовый. При этом басовик снабдили многослойным диффузором C-CAM — это технология производства на основе сплава алюминия с керамическим покрытием. Вместе с DCM [damped concentric mode] она минимизирует резонансы и искажения звучания.

На фотографии: Monitor Audio Bronze 50 6G. Источник: Audiomania.ru
На фотографии: Monitor Audio Bronze 50 6G. Источник: Audiomania.ru

Похожие технологии реализованы и в дюймовом высокочастотнике. Он закрыт оригинальной защитной сеткой. Однако производитель поставляет в комплекте и общую защиту на магнитных фиксаторах, охватывающую переднюю панель колонки [с правой стороны на фотографии выше]. На задней ее части находится фазоинвертор HiVe II с не совсем обычным дизайном.

Максимальный уровень звукового давления, которое генерирует система, составляет 107 дБ. Этого будет достаточно для небольших и средних по площади помещений, плюс — использования акустики в роли фронтальных или тыловых каналов домашнего кинотеатра. Bronze 50 настроены таким образом, чтобы колонки можно было размещать в зависимости от требований дизайна пространства — точное направленность на слушателя не требуется.

Дополнительные обзоры на английском есть тут и здесь.


[34 890] DALI Oberon 1 — младшая модель в линейке бренда с достаточно скромными габаритами. Она весит всего 4,2 кг и обладает средней высотой [274 мм — чуть выше Bronze 50 и намного ниже Arslab Stereo One]. При этом здесь присутствуют крупные НЧ-динамики [133 мм], что необычно для компактной акустики. Басовики обладают диффузорами из древесно-бумажной массы, антирезонансным шасси и задействуют технологию SMC [soft magnetic compound]. Она позволяет приблизить впечатления от прослушивания к звучанию, воспринимаемому слушателем на живых выступлениях любимых музыкантов.

На фотографии: DALI Oberon 1. Источник: Unsplash.com
На фотографии: DALI Oberon 1. Источник: Unsplash.com

ВЧ-динамик обладает диаметром 29 мм. Он тоже установлен на шасси, защищающее его от вибраций. Возможное максимальное звуковое давление этой системы — 106 дБ, что более чем достаточно для обычных комнат в квартире и подключения к домашнему кинотеатру.

В комплекте присутствуют сетчатые экраны со скругленными углами для фронтальной части акустики. Они различаются по оформлению в зависимости от вида отделки системы.

Дополнительные обзоры на английском — первый и второй.


Что еще у нас есть на Хабре:


ссылка на оригинал статьи https://habr.com/ru/company/audiomania/blog/552424/

Эмми Нётер. Эту женщину Эйнштейн считал одним из величайших творческих гениев математики

Читать про представительниц прекрасного пола всегда приятно, особенно когда это касается непревзойденных гениев и истинных мастеров в своих областях. Имя Эмми Нётер навсегда внесено в золотой зал славы математики, ведь даже Альберт Эйнштейн причислял её к величайшим математикам 20 века. Чем же эта женщина заслужила такое признание? 

Будущая королева абстрактной алгебры родилась в баварском городе Эрланген в 1882 году в состоятельной семье, главой которой был Макс Нётер, получивший ранее докторскую степень за свои нетривиальные исследования в области алгебраической геометрии — сложном направлении, изучающем геометрические объекты, заданные как множества решений систем алгебраических уравнений. Эмми, вопреки традициям гениев, с детства не проявляла необычных математических способностей, но была очаровательным и умным ребенком, играла на фортепьяно и любила танцевать.

Легче всего Эмми давались иностранные языки. В 18 лет она уже прекрасно владела французским и немецким, что позволило успешно сдать экзамены и претендовать на должность преподавателя в школах для девушек. Однако, вопреки здравому смыслу, Эмми решила продолжить обучение в Эрлангенском университете в качестве вольного слушателя, т.к. девушкам учиться официально было запрещено.

Поворотной точкой в жизни Эмми Нётер справедливо можно назвать зиму 1903-1904 года, когда она провела семестр в знаменитом Гёттингенском университете, где слушала лекции непревзойденных немецких маэстро, таких как Герман Минковский, Феликс Клейн и Давид Гильберт, во многом определивших ход развития не только математики, но и физики 20-го столетия. Вернувшись на малую родину в конце 1904 года, Эмми всё-таки официально поступила в университет, т.к. ограничения для женщин были к тому времени сняты.

Изъявив желание заниматься исключительно математикой, Нётер взялась за дело с присущим ей упорством и прозорливостью: уже через 4 года она внесла значительный вклад в теорию инвариантов, успешно защитив диссертацию под руководством Пауля Гордана.

Простейший инвариант - это длина отрезка на плоскости. Если начать его вращать в любом направлении, параллельно переносить, отражать и т.д., то длина от этого не изменится. Значит, длина - это инвариант. Конечно, Эмми изучала куда более сложные вещи.
Простейший инвариант — это длина отрезка на плоскости. Если начать его вращать в любом направлении, параллельно переносить, отражать и т.д., то длина от этого не изменится. Значит, длина — это инвариант. Конечно, Эмми изучала куда более сложные вещи.

Однако через годы Эмми назвала свои первоначальные исследования «хламом». Что, может быть, и так, ведь великие свершения были еще впереди. В 1910 году научный руководитель Эмми ушел в отставку, а его место занял Эрнст Фишер, через которого она уже лично познакомилась с Давидом Гильбертом, очень живо заинтересовавшимся исследованиями девушки в области абстрактной алгебры. В 1915 году интерес превратился в приглашение Нётер для преподавания в Геттинген, однако даже Гильберту (!!!) не удалось переломить предрассудки университетского совета и пробить ей постоянно оплачиваемую должность.

Говорят, Гильберт сказал своим коллегам, что не понимает, как пол может быть препятствием к занятию ученой должности, ведь университет — всё же не мужская баня.

Однако, несмотря на все трудности, в 1918 году Эмми Нётер внесла гигантский вклад… в теоретическую физику! В 36 лет она доказала теорему, названную её именем, которая связывает законы симметрии физических систем и законы сохранения энергии. На основе одной из наиболее абстрактных областей математики — теории бесконечных непрерывных групп, называемых группами Ли,- Нётер сделала важные выводы об однородности времени и пространства, которые неоднократно будут использоваться для построения физической картины мира.  

Согласно теореме Нётер, если система инвариантна относительно непрерывной группы симметрии, то в ней автоматически действует закон сохранения той или иной величины. Например, для группы пространственного поворота действует закон сохранения момента импульса, пространственного переноса - сохранения импульса, а для временного - закон сохранения энергии. Чувствуете, как пахнет фундаментальностью? И это я еще не упоминаю про специальные унитарные группы, которые определяют симметрии в электродинамике и в квантовом мире.

Первая страница прорывной работы Нётер.
Первая страница прорывной работы Нётер.

Если написать уравнение, которое кратко излагает все, что мы знаем о теоретической физике, то на одном его конце были бы имена Фейнмана, Шрёдингера, Максвелла и Дирака, а на другом — Эмми Нётер. Продолжив работу в Геттингене, Эмми защитила докторскую диссертацию, а в 1922 году всё-таки получила оплачиваемую должность «лектора по алгебре». Еще бы, ведь годом ранее Нётер опубликовала революционную работу, посвященную коммутативным кольцам и идеалам, заложив фундамент общей алгебры.

Эмми Нётер (в центре) с коллегами.
Эмми Нётер (в центре) с коллегами.

За 11 лет последующих лет Нётер внесла вклад в развитие теории Галуа, теории инвариантов конечных групп, топологии, некоммутативной алгебры и теории представлений, выполнила большую работу в области гиперкомплексных чисел. И пусть многие из этих разделов математики абстрактны и не тревожат ум обычного человека, тем не менее все они важны в целом для научно-технического прогресса и процветания человечества.

Самые известные из комплексных чисел — кватернионы. В отличие от обычных комплексных чисел, у кватернионов сразу три мнимые единицы: q = a+bi + cj+dk. Зачем так много? Дело в том, что эти отпрыски из четырехмерного мира позволяют очень просто описывать оптимальные траектории тел в пространстве. Если нужно подробнее — лучшее видео на эту тему.

Вообще, умение мыслить максимально абстрактно было козырем Эмми Нётер. Голландский математик Бартель Ван дер Варден писал об этом так:

«Максима, которой следовала Эмми Нётер на протяжении её работы, может быть сформулирована следующим образом: любая взаимосвязь между числами, функциями и операциями становится прозрачной, поддающейся обобщению и продуктивной только после того, как она оказывается отделена от каких-либо конкретных объектов и сведена к общезначимым понятиям»

В 1933 году мир изменился. В Германии к власти пришли фашисты, которые не могли терпеть, чтобы в колыбели цивилизации белокурым арийцам преподавала математику женщина-еврейка. Эмми поддерживала тесные контакты с советскими математиками, поэтому одним из вариантов рассматривался переезд в СССР и работа на кафедре алгебры в МГУ, однако получить на это разрешение не получилось.

Эмми пришлось эмигрировать в США, где она преподавала в женском колледже и читала лекции в Принстоне. Однако жить в более благоприятных условиях Нётер осталось недолго — через два года в возрасте 53 лет она умерла от онкологии. В течении всей жизни у Эмми Нётер не было ни мужа, ни детей. Их всех заменила математика и невероятное стремление к знаниям. 

ссылка на оригинал статьи https://habr.com/ru/company/itsoft/blog/552968/

Как мы сдавали онлайн экзамены в ВУЗах прошли сертификацию, выиграли несколько онлайн олимпиад

В начале года у меня был разговор с моим хорошим другом – студентом одного московского вуза, он рассказал, как в условиях карантина и массовой «удаленки» ему приходится сдавать экзамены. Я узнал новое для себя слово – «прокторинг». Естественно, как человек любопытный, сразу же после беседы полез смотреть, что это за чудо-юдо такое.

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

Но в сегодняшних условиях уже несколько месяцев студенты учатся дистанционно, и сессию в большинстве вузов не отменяли экзаменуемый сидит перед веб-камерой, а проктор наблюдает за ним. Одновременно этот человек видит, что у студента на экране компьютера. Если проктору что-то не нравится в поведении экзаменуемого, он выносит ему предупреждение или даже прерывает экзамен.

Если вы думаете, что «поскольку я уже не студент и меня не коснется», не спешите закрывать статью. Прокторинг применяется при сертификации, при прохождении корпоративных курсов. А в связи с переводом их в онлайн формат, даже после снятия эпидемиологических ограничений большинство экзаменов будет переведено в онлайн формат, поскольку это экономически выгодно. Кроме того, системы прокторинга будут применятся в компаниях, которые проводят регулярное обучение сотрудников и тестирование для повышения квалификации или приема на работу.

Дисклеймер: Во всех олимпиадах и сертификациях, в которых мы приняли участие, мы написали организаторам и честно признались, что применяли средства обхода прокторинга и просили исключить нас из списка победителей. Поскольку нашей целью было не выиграть олимпиаду, а обойти прокторинг, а там, где мы удостоверились, что это сделать удалось, мы прекращали сами дальнейшие участие. Мы мне принимали участие во вступительных экзаменах в ВУЗЫ. А сдача сессионных экзаменов лежит на совести студентов, все они были предупреждены что нарушают правила, а мы оказывали только техническую поддержку.

И так в чем заключается онлайн прокторинг? В основе своей это наблюдение за экзаменуемым посредством WEB камеры; контроль звуков в комнате экзаменуемого; и контроль экрана монитора.

Что теоретически может контролироваться с помощью WEB камеры: аномалии в направлении взгляда; закрытие части лица; наличие других лиц в кадре; обнаружение вторичных гаджетов; обнаружение книг и заметок; обнаружение невербальной коммуникации; обнаружение калькулятора (если это не разрешено).

Что теоретически может контролироваться с помощью микрофона: обнаружение человеческого голоса; обнаружение шелеста бумаги.

Контроль экрана монитора обеспечивает — обнаружение переключения монитора; обнаружение широковещательного ПО; обнаружение переключения вкладок в браузере; обнаружение сторонних алгоритмов. При этом часто визуально контролируется панель задач системное время на панели задач, иногда с точностью до секунды, вкладки в браузере, пару раз попросили продемонстрировать диспетчер задач и диспетчер устройств. Но некоторое ПО для прокторинга может мониторить процессы сетевую активность и другие параметры компьютера, но об этом позже.

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

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

  • обеспечить необходимые условия для работы системы прокторинга, в том числе в соответствии с рекомендациями к подготовке рабочего места; Освещенность и чистый рабочий стол.

  • использовать для идентификации оригинал документа, удостоверяющий личность;

  • не покидать зону видимости веб-камеры во время выполнения заданий;

  • при выполнении заданий экзаменуемый по требованию проктора обязуется расположить камеру так, чтобы обеспечить видимость любого места в комнате;

  • в случае отсутствия технической возможности для реализации вышеуказанного пункта (например, недостаточный угол обзора видеокамеры, встроенной в ноутбук или монитор компьютера) экзаменуемый по требованию проктора обязан показывать лист с решением задания по запросу проктора во время проведения экзамена;

  • не отключать микрофон и не снижать его уровень чувствительности к звуку во время тестирования;

  • использовать только одно средство вывода изображения (монитор), одну клавиатуру, одну компьютерную мышь;

  • участник олимпиады не имеет права предоставлять доступ к компьютеру посторонним лицам во время выполнения заданий заключительного этапа, в том числе посредствам программ для удаленного управления компьютером, вступать в разговоры с третьими лицами, открывать другие вкладки браузера, использовать справочные материалы (книги, записи и т.д.), любые гаджеты (мобильные телефоны, пейджеры, планшеты, умные часы и т.д.), наушники, дополнительные мониторы и компьютерную технику;

  • не использовать средства виртуализации;

  • не проговаривать вопросы и задания вслух с уровнем громкости обеспечивающим возможность третьим лицам услышать текст заданий/вопросов;

  • выполнять инструкции проктора;

  • немедленно сообщить Проктору о нарушениях правил, произошедших не по вине экзаменатора.

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

Некоторые организации не желали тратить деньги на системы прокторинга и пытались обеспечить контроль посредством систем видео связи Skype или Zoom, некоторые обеспечивали пост прокторинг просили прислать видеофайл с записью экрана и web камеры программой захвата экрана и веб камеры.

Был случай, когда задания были направлены на почтовый ящик экзаменуемого, их под видео в Skype необходимо было скачать решить отсканировать и направить организаторам экзамена. Запись монитора компьютера при этом не велась, но требовалось установить камеру чтобы было видно экзаменуемого, письменный стол, и по возможности экран компьютера. Мы во время экзамена вошли на почтовый ящик экзаменуемого выполнили решения, отсканировали его своим сканером, а потом положили наши сканы в расшаренную папку на компьютер экзаменуемого. Он сделал вид что отсканировал свою работу на своем сканере, а отправил наши уже загруженные сканы. Поскольку контроль почерка не проводился за эту работу мы получили 100 из 100 условных балов. Кода мы связывались с организаторами пытались объяснить, как обошли контроль, было видно, что они нас даже не понимали.

Очень часто прокторинг обеспечивался следующим образом сайт, на котором демонстрируются задания, и браузер просят включить демонстрацию экрана доступ к веб камере и микрофону.

В данном случае нам необходимо было получить задания, которые демонстрировались экзаменуемому. Мы делали скриншоты экрана каждые 10 сек в расшаренную папку, для этого написали простое приложение, которое не видно не в панели задач не в диспетчере задач. Виден процесс, название которого не чем не выделяется. Отследить факт снятия скриншота достаточно сложно, а запретить практически невозможно, тем боле что его можно делать на уровне драйвера. Или воспользоваться картой захвата.

Необходимо было организовать канал обратной связи использовать микронаушник не очень хотелось поскольку мы посчитали «неспортивным». Мы обнаружили что чувствительность нашего микрофона недостаточно хороша чтобы определить некоторые низкочастотные звуки, но при этом проходит все необходимые проверки. Поигравшись чувствительностью микрофона и АЧХ колонки, мы добились того что смогли передать и воспроизвести низкочастотный звук различаемый экзаменуемым, но при этом не фиксируемый микрофоном. Звук при этом так себе, но можно разобрать концепцию решения задачи. Для коммуникации экзаменуемого с помощником использовали обычный беспроводной дверной звонок. Что позволяло коммуницировать в режиме да/нет.

Излишние требования к прокторингу затрудняют работу самих организаторов. Показательным примером была олимпиада по информатике университета одного IT университета. Необходимо было вести запись рабочего экрана и с двух камер с помощью программы OBS. Причем перед началом экзамена необходимо было продемонстрировать подключенное оборудование разрешение монитора и потвердеть то что подключен один монитор, продемонстрировать диспетчер задач. Организаторы потребовали, чтобы время в панели чтобы во время записи панель задач не скрывалась, а системное время показывалось с точностью до секунды, для этого пришлось править реестр. Затем необходимо было этот видео файл размером более 5-6 ГБ загрузить на облачное хранилище и ссылку отправить организаторам. При этом необходимо было подключаться через Zoom, в Zoomе выбрать виртуальную камеру OBS которая передавала видеопоток с двух web камер и захвата экрана. Это вызвало кучу головной боли у организаторов, поскольку настройки программы OBS и правка реестра вызывала огромные проблемы у пользователей несмотря на подробную инструкцию.

Поскольку в ходе олимпиады необходимо было писать код. А человек, который учавствовал не то что не умел программировать он даже печатать нормально не умел. Необходимо было расширить функционал нашего приложения. Суть его заключалась в следующем. Мы, анализируя задания получение со скринов писали код программки в обычный текстовый файл.  Затем загружали его в папку на компьютере экзаменуемого. Программка отслеживала нажатия клавиш и в случае комбинации трех заранее выбранных клавиш. Считывала этот файл, а затем по нажатию любой клавиши на клавиатуре выводила на экран нужный символ. От экзаменуемого в данный момент требовалось в лучших традициях голливудских фильмов про хакеров, просто нажимать кнопки на клавиатуре как на пианино. По признанию самого экзаменуемого, самое сложное было в тот момент сдержать улыбку и держать «poker face». В данной олимпиаде мы вошли в топ 5 лучших после чего опять написали организаторам, и все рассказали. На удивление в данном случае нас выслушали с особым вниманием и обещали принять меры.

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

Далее мы столкнулись с системой examus или «Экзамус» на данный момент — это самая совершенная система прокторинга. Но ее использование вызывает кучу вопросов. Сама система представляет собой расширение, для браузера которое требует доступ к камере микрофону, может вести запись экрана. Анализирует запушённые приложения, подключенное оборудование историю браузера и историю поиска. И требует отключить антивирус на компьютере. По их заявлениям они обладают достаточно серьезными возможностями ИИ для анализа поведения экзаменуемого, анализа его клавиатурного почерка, экзаменуемого и планируют контролировать пульс ЭКГ и другие биометрические параметры. Система требует прав администратора в системе и может залезть куда угодно на компьютере. Она собирает обрабатывает кучу персональных данных.

Следует отметить что examus является закрытой системой нигде не публиковался аудит кода и ее истинные возможности и методы контроля. И даже для ВУЗов не раскрываются ее полный функционал.

Отдельный вопрос вызывает документ о политике приватности программы, в котором содержится абстрактный пункт о возможности «‎передавать личную информацию при заключении коммерческой сделки»

Студенты ВШЭ выражали претензии, публично заявив о недоверии к ней, и направив ректору просьбу пересмотреть решение об экзаменации через систему «Экзамус». Их недовольство спровоцировали стандарты проведения экзамена и вседозволенность программы. Студентам удалось выйти на связь с директором «Экзамуса». Хотя он и ответил на вопросы, его комментарии почти не внесли ясности. Мониторинг ранее открытых сайтов объяснялся необходимым «для статистики и повышения эффективности работы сайта», а пункт о личных данных оказался якобы обычной практикой IT-компаний, и необходим из-за обязанности передавать данные в правоохранительные органы.

Поскольку в данном случае это были не олимпиады, а сессионные экзамены и за попытку списывания у студента могли бы быть серьезные проблемы. К вопросу подошли максимально серьезно. Мы поставили себя на место прокторов и думали, как и что бы мы контролировали в системе.

Было принято решение не использовать виртуальную машину поскольку программе достаточно легко определить, что она запущенна в виртуальной среде. Так же приняли решение проводить тестирование на чистой только что установленной ОС и после экзамена откатывать ОС к изначальному состоянию.

Поскольку система скорее всего реализует функцию «keylogger», было принято решение отказаться от трюка с клавиатурой. Мы использовали 2 одинаковые радио клавиатуры и мыши, а система видела только радио модуль, а радио модуль реагировал на обе клавиатуры, можно было в соседней комнате набирать текст. Все файлы скриншоты шифровались внутри программки и максимально пережимались и отправлялись на локальный сервер через https со стороны что система общается с роутером. Программка была максимально замаскирована под системное приложение. В этом году мониторинг биоактивности в этом году не проводился. Но мы относимся этим заявлениям максимально серьезно.

В итоге мы успешно сдали все сессионные экзамены в нескольких вузах.

Так же мы без особых проблем прошли прокторинг при Сертификация по Яндекс.Директу. но там система не определяла вообще ни чего и можно было спокойно пользоваться программами удаленного доступа.

Выводы

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

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

Данные системы будут дальше развиваться и применяться поскольку это существенно дешевле чем реальные экзамены.

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

Планы на будущее

  • Попробовать применить IP KVM, мы хотели его попробовать сразу, но не успели заказать и оттестировать.

  • Раздобыть карту захвата, которая не определяется системой и позволяет добавить в видеопоток на монитор собственную информацию попробуем реализовать технологию picture by picture.

  • Будем разрабатывать собственную клавиатуру, которая бы позволяла обеспечить подключение других систем.

  • Будем думать, как можно будет подделывать информацию с датчиков ЭКГ и пульса.

Все имена изменены все совпадения случайны.

ссылка на оригинал статьи https://habr.com/ru/post/552970/