Shellcode là gì

  -  
Trong clip khai thác BoF (https://viviancosmetics.vn/threads/video-huong-dan-khai-thac-bof-co-ban.8391/), bọn họ có cần sử dụng đến một con shellcode là binsh. Bây giờ mình đang hướng dẫn chúng ta cách hoạt động của một con shellcode và biện pháp viết nó.Môi trường: Linux, viết shellcode 32bit.Linh các file đính kèm (con shellcode binsh, file testShellcode.c) sinh hoạt cuối bài bác viết.Khi viết shellcode trên môi trường xung quanh Linux, ta dùng đến các system call. Trên Windows thường xuyên không có tác dụng vậy, mà nên gọi tới những hàm trong thư viện dll, vì khối hệ thống system điện thoại tư vấn qua những đời Windows bị cầm cố đổi, mà không phải việc gì cũng làm được. Bám dính trên Linux thì ngược lại, ổn định định, rõ ràng, hỗ trợ mọi bài toán từ ghi file tới mở kết nối socket.System hotline là những lời gọi tới những xử lý ngắt, mà những xử lý này được triển khai trong kernel. Lúc ta call một hàm trên khối hệ thống 32bit, thì ta đề nghị truyền tham số vào stack và tiến hành lệnh call. Tuy thế khi triển khai gọi một system call, ta vẫn truyền các tham số vào những thanh ghi, và thực hiện lệnh int 0x80.Ví dụ một con shellcode đơn giản dễ dàng nhất, chỉ thực hiện các bước tương từ hàm exit, qua lời call system call sys_exit:


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

Shellcode trên tương tự với lời gọi hàm exit(0x3). Vào Linux, hàm exit bao gồm system call khớp ứng của nó, nhận 1 tham số. Tham số này được truyền qua thanh ghi ebx (mov ebx, 0x3). Còn system điện thoại tư vấn exit bao gồm số hiệu 1, đề nghị ta truyền eax bằng 1 (mov eax, 0x1). Sau cuối gọi lệnh int 0x80 là xong.Để biên dịch con shellcode trên, ta tạo thành một file exit.asm với nội dung:
*

Như hình bên trên ta thấy vùng bôi màu và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 chương trình call chạy shellcode như sau:
*

Nhận thấy quý hiếm trả về là 3 => shellcode đã triển khai thành công!Để tra số hiệu của các system call, rất có thể xem trên http://syscalls.kernelgrok.com/.
*

Ví dụ, sys_read bao gồm số hiệu 3. Tuyệt để gọi sys_write, ta đề xuất truyền eax = 0x4.Trong bảng trên, các tham số buộc phải truyền vào mang đến ebx, ecx,… không được chuẩn, ví dụ đối với sys_execve, các tham số biểu thị như bên trên là sai. Để biết buộc phải truyền các tham số đến sys_execve như thế nào, ta thực hiện định nghĩa hàm:Tra số hiệu được eax = 0xbThứ trường đoản cú truyền các tham số lần lượt là ebx, ecx, edx, esi, ediXem tư tưởng hàm bằng man execve:
Vậy đề xuất truyền ebx = filename, ecx = argv, edx = envp.Con shellcode binsh chỉ đơn giản dễ dàng gọi cho hàm execve với các tham số như sau:filename = “/bin//shx00x00x00x00”argv = NULLenvp không xác định (không truyền gì vào cho edx)


Xem thêm: Uy Tín Là Gì Cũng Như Uy Tín Nghĩa Là Gì, Đọc Câu 15: Uy Tín Là Gì

Người ta truyền các tham số không tuân quy tắc như trên là để triển khai sao mang lại shellcode ngắn nhất tất cả thể, và không tồn tại byte 0x00. Nhỏ shellcode binsh tạo ra chỉ nhiều năm 21 byte. Test test shellcode:
Tổng kết lại, ta có:Shellcode thường xuyên được hotline lên những system call. Sử dụng system call table để tra danh sách system call.Sử dụng nasm để viết shellcode.Dùng testShellcode để khám nghiệm shellcode có chạy hay không (debug bởi gdb nếu như cần).
Mời các bạn tham gia Group viviancosmetics.vn để đàm đạo và cập nhật tin tức bình yên mạng sản phẩm ngày.Lưu ý từ bỏ viviancosmetics.vn:
con kiến thức bình an mạng nhằm phòng chống, không có tác dụng điều xấu. Luật pháp liên quan
Mời các bạn tham gia Group viviancosmetics.vn để bàn bạc và cập nhật tin tức an ninh mạng sản phẩm ngày.Lưu ý trường đoản cú viviancosmetics.vn:
kiến thức an toàn mạng để phòng chống, không làm cho điều xấu. Quy định liên quan
*
Reactions:tmnt53
Comment
Dang dinh viet 1 bai huong dan viet ve shellcode thi ban lam rui...... Hehehe


Xem thêm: Những Cái Tên Bá Đạo Trong Game, Cách Đặt Tên Nhân Vật Trong Game Đẹp

Mời các bạn tham gia Group viviancosmetics.vn để đàm đạo và update tin tức bình yên mạng sản phẩm ngày.Lưu ý trường đoản cú viviancosmetics.vn:
con kiến thức bình yên mạng nhằm phòng chống, không có tác dụng điều xấu. Lao lý liên quan