Какова сфера применения Kali Linux? [закрыто]

Эти структуры присутствуют в файлах ELF.

Давайте рассмотрим заголовок ELF:

#define EI_NIDENT (16)

typedef struct
{
  unsigned char e_ident[EI_NIDENT];     /* Magic number and other info */
  Elf32_Half    e_type;                 /* Object file type */
  Elf32_Half    e_machine;              /* Architecture */
  Elf32_Word    e_version;              /* Object file version */
  Elf32_Addr    e_entry;                /* Entry point virtual address */
  Elf32_Off     e_phoff;                /* Program header table file offset */
  Elf32_Off     e_shoff;                /* Section header table file offset */
  Elf32_Word    e_flags;                /* Processor-specific flags */
  Elf32_Half    e_ehsize;               /* ELF header size in bytes */
  Elf32_Half    e_phentsize;            /* Program header table entry size */
  Elf32_Half    e_phnum;                /* Program header table entry count */
  Elf32_Half    e_shentsize;            /* Section header table entry size */
  Elf32_Half    e_shnum;                /* Section header table entry count */
  Elf32_Half    e_shstrndx;             /* Section header string table index */
} Elf32_Ehdr;

typedef struct
{
  unsigned char e_ident[EI_NIDENT];     /* Magic number and other info */
  Elf64_Half    e_type;                 /* Object file type */
  Elf64_Half    e_machine;              /* Architecture */
  Elf64_Word    e_version;              /* Object file version */
  Elf64_Addr    e_entry;                /* Entry point virtual address */
  Elf64_Off     e_phoff;                /* Program header table file offset */
  Elf64_Off     e_shoff;                /* Section header table file offset */
  Elf64_Word    e_flags;                /* Processor-specific flags */
  Elf64_Half    e_ehsize;               /* ELF header size in bytes */
  Elf64_Half    e_phentsize;            /* Program header table entry size */
  Elf64_Half    e_phnum;                /* Program header table entry count */
  Elf64_Half    e_shentsize;            /* Section header table entry size */
  Elf64_Half    e_shnum;                /* Section header table entry count */
  Elf64_Half    e_shstrndx;             /* Section header string table index */
} Elf64_Ehdr;

Заголовок ELF находится в начале каждого файла ELF.

На самом деле это означает, что первые 16 байт файлов ELF - это поля e_ident заголовка ELF:

  • первый байт - 0x7f;

  • второй - 'E';

  • третий - 'L';

  • четвертый - 'F';

  • пятый - класс;

  • шестой - кодировка данных;

  • седьмой - версия файла;

  • восьмой - ABI ОС;

  • и т.д.

После поля e_ident, следующие 2 байта - e_type.

Если вы возглавите /bin/bash, то сможете увидеть ELF в самом начале.

Теперь если вы сделаете hexdump начала ELF файла:

$ xxd /bin/bash | head
00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000  .ELF............
00000010: 0200 3e00 0100 0000 7005 4200 0000 0000  ..>.....p.B.....
00000020: 4000 0000 0000 0000 c0cd 0f00 0000 0000  @...............
00000030: 0000 0000 4000 3800 0900 4000 1d00 1c00  ....@.8...@.....
00000040: 0600 0000 0500 0000 4000 0000 0000 0000  ........@.......
00000050: 4000 4000 0000 0000 4000 4000 0000 0000  @.@.....@.@.....
00000060: f801 0000 0000 0000 f801 0000 0000 0000  ................
00000070: 0800 0000 0000 0000 0300 0000 0400 0000  ................
00000080: 3802 0000 0000 0000 3802 4000 0000 0000  8.......8.@.....
00000090: 3802 4000 0000 0000 1c00 0000 0000 0000  8.@.............

Первая строка этого hexdump - первые 16 байт (e_ident):

  • первый байт действительно 0x7f;

  • затем идет "ELF";

  • после этого идет класс 0x02 для ELFCLASS64 (ELF64);

  • затем кодировка, 0x01 для ELFDATA2LSB;

  • и т.д.

Первые два байта второй строки - это e_type. Они закодированы в LSB (из-за ELFDATA2LSB), поэтому значение на самом деле 0x0002, что означает ET_EXEC (это исполняемый файл).

Следующие два байта - это архитектура (e_machine): 0x003e для EM_X86_64, потому что это x86_64 исполняемый файл.

Вы должны быть в состоянии расшифровать вручную все поля в заголовке ELF и вы должны найти те же значения, что и те, которые даны readelf. Исходя из этого, вы можете найти другие структуры ELF в файле, такие как ElfXX_Shdr или ElfXX_Phdr и расшифровать их на основе их определения (и вы должны найти те же значения, что и в readelf).

2
21.08.2018, 05:25
2 ответа

Kali Linux - это дистрибутив для опытных пользователей Linux, в который входят инструменты для тестирования проникновения в сеть. Он предназначен для работы на виртуальной машине с небольшим количеством постоянных данных.

Kali может использоваться как универсальная система, но она не предназначена для этого, и попытки использовать ее для других целей часто приводят к разочарованию. (Источник: бесконечный поток вопросов, которые мы получаем на Stack Exchange от людей, которые пытались использовать Kali для чего-то, для чего он не предназначен.)

Kali предназначена для опытных пользователей . Если вы не знакомы с командной строкой Linux и сетями, используйте более дружелюбный дистрибутив, такой как elementary OS, Linux Mint или Ubuntu.

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

Если вам нужны дополнительные драйверы для поддержки вашего оборудования, вам будет легче найти или собрать их для популярных дистрибутивов, таких как Ubuntu и Fedora или RHEL / CentOS, чем для Kali. Запустите универсальный дистрибутив в качестве основной системы и запустите Kali на виртуальной машине.

4
27.01.2020, 21:54

Практически любой дистрибутив (включая Kali) можно использовать в качестве достойного рабочего стола. Даже Knoppix или openBSD могут стать настольным компьютером, если вы готовы принять вызов. Дело в том, что ОС поставляется с компилятором C и библиотекой C ( gcc и glibc в большинстве случаев, но llvm может быть опцией), откуда вы можете скомпилировать практически все, что захотите. Конечно, вы ограничены программным обеспечением с открытым исходным кодом, поскольку вы компилируете его из исходного кода.

Черт, вы даже можете скомпилировать все с нуля .

Исключением из правила, согласно которому дистрибутив * BSD / Linux может использоваться в качестве эффективного рабочего стола, являются встроенные системы. Некоторые встроенные системы намеренно не используют компилятор C, поэтому вы не можете компилировать дополнительное программное обеспечение.


С учетом всего сказанного, Kali Linux использует репозитории Debian, из которых вы можете получить все, что есть в Debian, с помощью простого apt-get (без компиляции). Включая несколько оконных менеджеров, почтовых программ, браузеров. На самом деле гораздо больше, чем вы можете пережить.

2
27.01.2020, 21:54

Теги

Похожие вопросы