Hướng dẫn test shellcode

tmnt53

VIP Members
25/04/2015
98
132 bài viết
Hướng dẫn test shellcode
Hôm trước mình có một bài viết hướng dẫn cách viết shellcode trên Linux. Cơ mà một số bạn vẫn chưa hiểu bản chất shellcode, nên hôm nay mình viết một bài giải thích cụ thể hơn.

Shellcode thực chất chỉ là một dãy các lệnh thực thi – hay là một đoạn mã máy, được viết dưới dạng một xâu. Nó không phải là một chương trình thực thi hoàn chỉnh. Hãy cùng phân biệt một file ELF và một con shellcode:

Như trong hình dưới đây, ta dump ra con shellcode exit:

exit.png

Con shellcode exit này đơn giản chỉ là xâu “\xbb\x03\x00\x00\x00\xb8\x01\x00\x00\x00\xcd\x80”. Nó chỉ gồm có 12 byte.

Còn khi bạn lập trình assembly hay lập trình C, thì đều là tạo ra một file thực thi có định dạng ELF. Nó có kích thước tới hàng KBbyte đến MByte. Ví dụ, với chương trình asm rất nhỏ sau:

C:\Users\Manh\AppData\Local\Temp\msohtmlclip1\01\clip_image004.jpg

exit_asm.png

Khi mình biên dịch ra (dùng các lệnh ở dòng 3, 4), nó cũng có kích thước tới 488Byte và là một file cấu trúc ELF hoàn chỉnh. Dùng lệnh readelf ta thấy nó có một segment text duy nhất:
C:\Users\Manh\AppData\Local\Temp\msohtmlclip1\01\clip_image006.jpg

compiled.png

Do sự khác biệt trên, khi mình chạy testShellcode (con shellcode trên là 32bit, nên chạy testShellcode32. Ở đây, testShellcode là chương trình mình nhắc tới trong bài viết shellcode https://whitehat.vn/threads/huong-dan-viet-shellcode.8472/), ta không thể sử dụng nó để chạy file mExit được.

Trang shell-storm có database của rất nhiều shellcode Windows, Linux, trên đủ các kiến trúc 32bit, 64bit, ARM, Intel,… Mình hay dùng con shellcode gọi /bin/sh dài 23 bytes của Hamza Megahed:

shellbinsh.PNG

File trên cũng có hoạt động tương tự như file testShellcode của mình, nhưng nó truyền hẳn shellcode cho chương trình ở dạng xâu, còn mình thì đọc vào từ file.

Sau đây, mình sẽ demo việc test một con shellcode bằng chương trình testShellcode.

 
Chỉnh sửa lần cuối bởi người điều hành:
Thanks mod.
Nhưng mình nghĩ đây vẫn chưa thể nói là một file ELF hoàn chỉnh vì nó chỉ khai báo/sử dụng mỗi section text

260px-Elf-layout--en.svg.png
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Hoàn chỉnh là nó thực hiện được chức năng của mình. Định dạng elf còn dùng cho các file object, nó ko có program header chẳng lẽ lại ko phải là một file elf hoàn chỉnh? Nói chung đây là một bài cho newbie, mình không nên đào sâu quá
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Thẻ
shellcode test shellcode
Bên trên