วิธีวิเคราะห์ไฟล์ไบนารีใน Linux

วิธีวิเคราะห์ไฟล์ไบนารีใน Linux

ในบทความนี้ เราจะอธิบายวิธีวิเคราะห์ไฟล์ไบนารีใน Linux

เราจะครอบคลุมคำสั่งและเครื่องมือ 5 อย่างง่าย ๆ ที่สามารถช่วยคุณวิเคราะห์ไฟล์ไบนารีได้อย่างง่ายดาย Linux มีชุดเครื่องมือมากมายที่ทำให้การวิเคราะห์ไบนารีเป็นเรื่องง่าย! ไม่ว่าหน้าที่การงานของคุณจะเป็นเช่นไร หากคุณทำงานบน Linux การรู้พื้นฐานเกี่ยวกับเครื่องมือเหล่านี้จะช่วยให้คุณเข้าใจระบบของคุณดีขึ้น

มาเริ่มกันเลย.

1. ไฟล์

คำสั่ง file จะช่วยคุณระบุประเภทไฟล์ที่คุณกำลังจัดการ fileระบุไฟล์ที่จัดรูปแบบพิเศษที่มีการทดสอบตามตำแหน่ง การทดสอบตามตำแหน่งเริ่มต้นและการทดสอบตามบริบทจะไม่ถูกดำเนินการ

คำสั่งบอกเฉพาะว่าไฟล์มีลักษณะอย่างไร ไม่ใช่สิ่งที่เป็น (ในกรณีที่ไฟล์ดูเนื้อหา) มันง่ายที่จะหลอกโปรแกรมโดยใส่ตัวเลขวิเศษลงในไฟล์ที่มีเนื้อหาไม่ตรงกัน ดังนั้นคำสั่งนี้จึงไม่สามารถใช้เป็นเครื่องมือรักษาความปลอดภัยอื่นนอกเหนือจากสถานการณ์เฉพาะได้

# file file.c
file.c: C program text

# file /bin/ls

bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=937708964f0f7e3673465d7749d6cf6a2601dea2, stripped, too many notes (256)

# file /etc/passwd
/etc/passwd: ASCII text

2. เปล่า

ldd พิมพ์อ็อบเจ็กต์ที่แบ่งใช้ (ไลบรารีที่แบ่งใช้) ที่แต่ละโปรแกรมหรืออ็อบเจ็กต์แบ่งใช้ที่ระบุบนบรรทัดคำสั่ง เมื่อมีการพัฒนาซอฟต์แวร์ เราพยายามที่จะไม่สร้างวงล้อขึ้นมาใหม่ มีชุดของงานทั่วไปที่โปรแกรมซอฟต์แวร์ส่วนใหญ่ต้องการ เช่น การพิมพ์หรือการอ่านจากไฟล์มาตรฐานหรือการเปิดไฟล์ เป็นต้น

งานทั่วไปทั้งหมดเหล่านี้แยกออกเป็นชุดของฟังก์ชันทั่วไปที่ทุกคนสามารถใช้แทนการเขียนตัวแปรของตนเองได้ ฟังก์ชันทั่วไปเหล่านี้อยู่ในไลบรารีที่เรียกว่า libc หรือ glibc

# ldd /bin/rm
linux-vdso.so.1 (0x00007ffcd6d7d000)
libc.so.6 => /lib64/libc.so.6 (0x00007f13d841c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f13d89f1000)

3. hexdump

hexdump - แสดงเนื้อหาไฟล์เป็นเลขฐานสิบหก ทศนิยม ฐานแปด หรือ ascii ยูทิลิตี hexdump เป็นตัวกรองที่แสดงไฟล์ที่ระบุ หรืออินพุตมาตรฐานหากไม่มีการระบุไฟล์ ในรูปแบบที่ผู้ใช้ระบุ

การเปิดไฟล์ที่ไม่รู้จักใน Hexdump ช่วยให้คุณเห็นว่าไฟล์นั้นมีอะไรบ้าง คุณยังสามารถเลือกที่จะดูการแสดง ASCII ของข้อมูลที่มีอยู่ในไฟล์ได้โดยใช้ตัวเลือกบรรทัดคำสั่งบางตัว ซึ่งอาจช่วยให้คุณทราบว่าเป็นไฟล์ประเภทใด

# hexdump -C /bin/ls | head
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF…………|
00000010 03 00 3e 00 01 00 00 00 00 5e 00 00 00 00 00 00 |..>……^……|
00000020 40 00 00 00 00 00 00 00 70 82 02 00 00 00 00 00 |@…….p…….|
00000030 00 00 00 00 40 00 38 00 0a 00 40 00 1f 00 1e 00 |…[email protected]…@…..|
00000040 06 00 00 00 04 00 00 00 40 00 00 00 00 00 00 00 |……..@…….|
00000050 40 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 |@…….@…….|
00000060 30 02 00 00 00 00 00 00 30 02 00 00 00 00 00 00 |0…….0…….|
00000070 08 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00 |…………….|
00000080 70 02 00 00 00 00 00 00 70 02 00 00 00 00 00 00 |p…….p…….|
00000090 70 02 00 00 00 00 00 00 1c 00 00 00 00 00 00 00 |p……………|

4 อ่านเอง

readelf แสดงข้อมูลเกี่ยวกับไฟล์อ็อบเจ็กต์รูปแบบ ELF ตั้งแต่หนึ่งไฟล์ขึ้นไป ตัวเลือกควบคุมข้อมูลเฉพาะที่จะแสดง ELF (รูปแบบไฟล์ที่ปฏิบัติการได้และเชื่อมโยงได้) เป็นรูปแบบไฟล์ที่โดดเด่นสำหรับปฏิบัติการหรือไบนารี ไม่ใช่แค่บน Linux แต่ยังรวมถึงระบบ UNIX ที่หลากหลายด้วย การอ้างอิงข้อกำหนดของ ELF จริงมีประโยชน์เมื่อใช้ readelf จะมีประโยชน์มาก

# readelf -h /bin/ls
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2’s complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: DYN (Shared object file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x67d0
Start of program headers: 64 (bytes into file)
Start of section headers: 140224 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 13
Size of section headers: 64 (bytes)
Number of section headers: 30
Section header string table index: 29

5. objdump

objdump - แสดงข้อมูลจากไฟล์อ็อบเจ็กต์ objdump แสดงข้อมูลเกี่ยวกับไฟล์อ็อบเจ็กต์ตั้งแต่หนึ่งไฟล์ขึ้นไป ตัวเลือกควบคุมข้อมูลเฉพาะที่จะแสดง ข้อมูลนี้ส่วนใหญ่มีประโยชน์สำหรับโปรแกรมเมอร์ที่ทำงานเกี่ยวกับเครื่องมือการคอมไพล์ แทนที่จะเป็นโปรแกรมเมอร์ที่ต้องการให้โปรแกรมของตนคอมไพล์และทำงาน คอมไพเลอร์นี้สร้างคำสั่งภาษาเครื่องที่เทียบเท่ากับซอร์สโค้ด ซึ่งจากนั้น CPU จะสามารถดำเนินการเพื่อทำงานที่กำหนดได้

# objdump -d /bin/ls | head

/bin/ls: file format elf64-x86-64

Disassembly of section .init:

0000000000004000 <.init>:
4000: f3 0f 1e fa endbr64
4004: 48 83 ec 08 sub $0x8,%rsp
4008: 48 8b 05 c9 ef 01 00 mov 0x1efc9(%rip),%rax # 22fd8 <__gmon_start__>

ในบทความนี้ เราได้เห็นวิธีวิเคราะห์ไฟล์ไบนารีใน Linux แล้ว

รับเซิร์ฟเวอร์เฉพาะ dual E5 series ประสิทธิภาพสูงและ KVM VPS ราคาถูก


วิธีสร้างกลุ่มใน Linux

วิธีสร้างกลุ่มใน Linux

กลุ่มใช้เพื่อจัดระเบียบผู้ใช้และสิทธิพิเศษเช่นการอ่านการเขียนและการดำเนินการอนุญาต ในการเพิ่ม groud คำสั่งคือ groupadd

3 วิธีในการตรวจสอบการใช้งาน CPU ใน Linux

3 วิธีในการตรวจสอบการใช้งาน CPU ใน Linux

อธิบาย 3 วิธีในการตรวจสอบการใช้งาน CPU ใน Linux การใช้งาน CPU หมายถึงการใช้ทรัพยากรในการประมวลผล หรือปริมาณงานที่ CPU จัดการ

วิธีการติดตั้งและกำหนดค่า DenyHosts ใน CentOS 7

วิธีการติดตั้งและกำหนดค่า DenyHosts ใน CentOS 7

DenyHosts ใช้กันอย่างแพร่หลายแทน Fail2ban หากมีการพยายามเข้าสู่ระบบ SSH ที่ไม่ถูกต้องมากเกินไป จะถือว่าการโจมตีด้วยกำลังเดรัจฉานหรือ

เมานต์ดิสก์ใหม่ไปยังเซิร์ฟเวอร์ Linux

เมานต์ดิสก์ใหม่ไปยังเซิร์ฟเวอร์ Linux

เราจะเรียนรู้วิธีเมานต์ดิสก์ใหม่กับเซิร์ฟเวอร์ Linux สำหรับการสาธิตนี้ เราใช้เซิร์ฟเวอร์คลาวด์ CentOS 7 ตอนนี้เมานต์พาร์ติชั่นดังที่แสดงด้านล่าง

ง่ายต่อการติดตั้ง Fail2ban บน Ubuntu 20.04

ง่ายต่อการติดตั้ง Fail2ban บน Ubuntu 20.04

อธิบายว่าการติดตั้ง Fail2ban บน Ubuntu 20.04 นั้นง่ายเพียงใด Fail2ban เขียนด้วยภาษาโปรแกรม Python และเป็นโอเพ่นซอร์สฟรี การกำหนดค่า

วิธีการติดตั้ง WireGuard VPN บน Ubuntu 20.04

วิธีการติดตั้ง WireGuard VPN บน Ubuntu 20.04

อธิบายวิธีการติดตั้ง WireGuard VPN บน Ubuntu 20.04 เป็นอย่างดี WireGuard เป็น VPN ที่ใช้งานง่าย รวดเร็ว และทันสมัยมากซึ่งใช้การเข้ารหัสที่ล้ำสมัย

วิธีการติดตั้ง OpenSSL 1.1.1d ใน CentOS

วิธีการติดตั้ง OpenSSL 1.1.1d ใน CentOS

OpenSSL เป็นชุดเครื่องมือเต็มรูปแบบที่มีประสิทธิภาพในเชิงพาณิชย์สำหรับโปรโตคอล Transport Layer Security (TLS) & (SSL) เรียนรู้การติดตั้ง OpenSSL 1.1.1d ใน CentOS

วิธีการติดตั้งและกำหนดค่า CSF บน CentOS 8

วิธีการติดตั้งและกำหนดค่า CSF บน CentOS 8

วิธีติดตั้งและกำหนดค่า CSF บนเซิร์ฟเวอร์ CentOS 8 ConfigServer Security & Firewall เป็นไฟร์วอลล์ (SPI) แอปพลิเคชันการเข้าสู่ระบบ/การตรวจจับการบุกรุกและความปลอดภัย

การกำหนดค่ากฎการตรวจสอบไม่สะท้อน – วิธีแก้ไขปัญหา

การกำหนดค่ากฎการตรวจสอบไม่สะท้อน – วิธีแก้ไขปัญหา

การกำหนดค่ากฎการตรวจสอบไม่สะท้อนให้เห็น? เรียนรู้ว่าวิศวกรฝ่ายสนับสนุนของเราแก้ปัญหาและแก้ไขปัญหาได้อย่างไร ไฟล์การกำหนดค่ากฎ /etc/audit/rules.d/audit.rules

CloudLinux โหลดสูงบนเซิร์ฟเวอร์

CloudLinux โหลดสูงบนเซิร์ฟเวอร์

ในบทความนี้ เราจะเรียนรู้วิธีที่วิศวกรฝ่ายสนับสนุนของเราแก้ไขการโหลดสูงของ CloudLinux บนเซิร์ฟเวอร์ โปรดตรวจสอบให้แน่ใจว่าขีดจำกัด LVE ของคุณได้รับการกำหนดค่าอย่างเหมาะสม