SHELLCODE LÀ GÌ

Trong video clip khai thác BoF (https://cheap-kenya-vacation-tips.com/threads/video-huong-dan-khai-thac-bof-co-ban.8391/), chúng ta tất cả dùng đến một con shellcode là binsh.

Bạn đang xem: Shellcode là gì

Hôm ni bản thân đang khuyên bảo chúng ta phương pháp hoạt động vui chơi của một nhỏ shellcode với phương pháp viết nó.Môi trường: Linux, viết shellcode 32bit.Linch các tệp tin đính kèm (con shellcode binsh, tệp tin testShellcode.c) sinh sống cuối bài viết.lúc viết shellcode trên môi trường xung quanh Linux, ta dùng đến những system Điện thoại tư vấn. Trên Windows thường xuyên không làm cho vậy, mà cần Gọi cho tới các hàm vào thư viện dll, vì chưng hệ thống system gọi qua các đời Windows bị biến đổi, cơ mà không phải câu hỏi gì cũng làm được. Còn bên trên Linux thì ngược lại, ổn định, cụ thể, hỗ trợ những câu hỏi tự ghi tệp tin cho tới mngơi nghỉ kết nối socket.System hotline là các lời Gọi cho tới các cách xử trí ngắt, nhưng những giải pháp xử lý này được triển khai trong kernel. khi ta Hotline một hàm trên hệ thống 32bit, thì ta đề xuất truyền tyêu thích số vào stachồng cùng triển khai lệnh điện thoại tư vấn. Nhưng lúc thực hiện Gọi một system Call, ta đã truyền những tđắm say số vào các thanh ghi, với thực hiện lệnh int 0x80.Ví dụ một con shellcode dễ dàng tuyệt nhất, chỉ thực hiện quá trình tương tự hàm exit, qua lời Điện thoại tư vấn system điện thoại tư vấn sys_exit:
Shellcode trên tương đương với lời call hàm exit(0x3). Trong Linux, hàm exit tất cả system gọi khớp ứng của nó, thừa nhận 1 tham số. Tmê mẩn số này được truyền qua tkhô hanh ghi ebx (mov ebx, 0x3). Còn system call exit gồm số hiệu 1, nên ta truyền eax bằng 1 (mov eax, 0x1).

Xem thêm: Bảng Bổ Trợ Cho Trundle - Trundle Mùa 11: Bảng Ngọc, Cách Lên Đồ Trundle

Cuối cùng Hotline lệnh int 0x80 là xong.Để biên dịch bé shellcode bên trên, ta sinh sản một tệp tin exit.asm với nội dung:
*
Và ta cần sử dụng nasm nhằm biên dịch: nasm exit.asm -o exit
Dòng BITS 32 nhằm mục đích chỉ mang lại nasm biết là ta cần biên dịch mã 32bit.Để dump shellcode ra, ta cần sử dụng objdump:objdump -D -b binary -mi386 -M intel fileName
*
Như hình bên trên ta thấy vùng thoa màu sắc tiến thưởng đó là mã hex của shellcode sau thời điểm được biên dịch.Để chạy shellcode này, ta sử dụng một công tác gọi chạy shellcode nlỗi sau:
*
Cmùi hương trình trên nhận tham mê số đầu tiên là file shellcode; đọc shellcode vào một string, và xúc tiến vùng shellcode ấy. Vì shellcode 32bit phải ta biên dịch buộc phải tmê say số -m32. Còn -execstack là nhằm có thể chấp nhận được tiến hành dữ liệu, như thế shellcode mới tất cả quyền chạy (theo như kỹ năng phần NX - https://cheap-kenya-vacation-tips.com/threads/gioi-thieu-nx-va-aslr.8446/)gcc testShellcode.c -o testShellcode32 -m32 -zexecstack
Ta Điện thoại tư vấn chạy fileshellcode exit, và in ra cực hiếm trả về:
*
Nhận thấy cực hiếm trả về là 3 => shellcode đã thực thi thành công!Để tra số hiệu của những system Điện thoại tư vấn, rất có thể coi trên http://syscalls.kernelgrok.com/.
*
lấy một ví dụ, sys_read bao gồm số hiệu 3. Hay để Điện thoại tư vấn sys_write, ta buộc phải truyền eax = 0x4.Trong bảng bên trên, các tđắm say số bắt buộc truyền vào mang đến ebx, ecx,… ko được chuẩn chỉnh, ví dụ đối với sys_execve, những tmê say số mô tả nlỗi trên là sai. Để biết phải truyền những tham mê số cho sys_execve sầu ra sao, ta thực hiện có mang hàm:Tra số hiệu được eax = 0xbThứ từ truyền những tyêu thích mốc giới hạn lượt là ebx, ecx, edx, emê mẩn, ediXem có mang hàm bằng man execve:
*
Vậy cần truyền ebx = filename, ecx = argv, edx = envp.Con shellcode binsh chỉ dễ dàng và đơn giản Hotline đến hàm execve cùng với các tđắm say số nlỗi sau:filename = “/bin//shx00x00x00x00”argv = NULLenvp không xác minh (ko truyền gì vào đến edx)
*
Người ta truyền những tsay đắm số không tuân nguyên tắc nhỏng bên trên là để triển khai làm sao cho shellcode nđính thêm tuyệt nhất hoàn toàn có thể, với không có byte 0x00. Con shellcode binsh tạo nên chỉ dài 21 byte. Test chạy thử shellcode:
*
Tổng sánh lại, ta có:Shellcode thường được gọi lên các system Gọi. Sử dụng system Điện thoại tư vấn table nhằm tra danh sách system Điện thoại tư vấn.Sử dụng nasm để viết shellcode.Dùng testShellcode nhằm kiểm tra shellcode gồm chạy hay là không (debug bằng gdb nếu cần).
Mời chúng ta tham mê gia Group cheap-kenya-vacation-tips.com để đàm luận và update thông tin an ninh mạng từng ngày.Lưu ý từ bỏ cheap-kenya-vacation-tips.com:
Kiến thức bình an mạng để chống kháng, không có tác dụng tin xấu. Luật pháp liên quan