เข้ารหัสและถอดรหัส Shellcode ด้วย XOR
การแนะนำ
ยินดีต้อนรับสู่บทความใหม่ของฉันในวันนี้ฉันจะแสดงให้คุณเห็นว่าฉันสร้างสองฟังก์ชันเพื่อเข้ารหัสและถอดรหัส Shellcode ด้วย XOR ได้อย่างไร
ฟังก์ชันทั้งสองนี้สร้างขึ้นด้วย C++ และเข้าใจง่ายมาก มาเริ่มกันเลย
XOR คืออะไร?
การเข้ารหัส XOR เป็นการดำเนินการระดับบิตชนิดหนึ่งที่ใช้กันทั่วไปในการเข้ารหัสเพื่อเข้ารหัสข้อมูล มันทำงานโดยการรวมข้อความธรรมดาเข้ากับรหัสลับโดยใช้ตัวดำเนินการ XOR (พิเศษหรือ) ผลลัพธ์ของการดำเนินการนี้คือข้อความไซเฟอร์เท็กซ์ที่สามารถถอดรหัสได้โดยการรวมเข้ากับคีย์ดั้งเดิมโดยใช้การดำเนินการ XOR เดียวกันเท่านั้น ความปลอดภัยของการเข้ารหัส XOR นั้นขึ้นอยู่กับข้อเท็จจริงที่ว่าการดำเนินการ XOR นั้นสามารถย้อนกลับได้ และเป็นการยากมากที่จะระบุคีย์ดั้งเดิมจากไซเฟอร์เท็กซ์เพียงอย่างเดียว
เหตุใดจึงใช้เข้ารหัสเชลล์โค้ด
การเข้ารหัส XOR มักใช้เพื่อเข้ารหัสเชลล์โค้ดเนื่องจากเป็นการดำเนินการที่ง่ายและรวดเร็วซึ่งสามารถใช้เพื่อปิดบังเนื้อหาของโค้ดได้ การดำเนินการ XOR ใช้ค่าไบนารีสองค่าและสร้างผลลัพธ์ที่เป็น 1 หากอินพุตตัวใดตัวหนึ่งเป็น 1 และมิฉะนั้นจะเป็น 0 เมื่อใช้การเข้ารหัส XOR เพื่อเข้ารหัสเชลล์โค้ด คีย์จะถูกเลือกและใช้เพื่อ XOR แต่ละไบต์ของเชลล์โค้ด ในการถอดรหัสเชลล์โค้ด คีย์เดิมจะถูกใช้เพื่อ XOR แต่ละไบต์อีกครั้ง ซึ่งจะย้อนกลับการเข้ารหัสและกู้คืนเชลล์โค้ดดั้งเดิม
การใช้การเข้ารหัส XOR เพื่อซ่อนเนื้อหาของเชลล์โค้ดสามารถช่วยหลีกเลี่ยงการตรวจจับโดยซอฟต์แวร์ความปลอดภัย เนื่องจากเชลล์โค้ดที่เข้ารหัสจะมีรูปแบบบิตที่แตกต่างจากเชลล์โค้ดดั้งเดิม และอาจไม่ตรงกับลายเซ็นที่รู้จักสำหรับโค้ดที่เป็นอันตราย อย่างไรก็ตาม การเข้ารหัส XOR อาจถูกทำลายได้ง่ายหากทราบคีย์ ดังนั้นจึงมักใช้ร่วมกับวิธีอื่นๆ เช่น การทำให้งงงวย เพื่อทำให้วิศวกรรมย้อนกลับยากขึ้น
รหัส
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
void XOR_decrypt(unsigned char key) {
for (int i = 0; i < len; i++) {
payload[i] = payload[i] ^ key;
cout << "\\x" << hex << setfill('0') << setw(2) << (int)payload[i];
}
cout << endl;
}
void XOR_encrypt(unsigned char key){
for(int i = 0; i < len; i++){
payload[i] ^= key;
}
for(int i = 0; i < len; i++){
cout << "\\x" << hex << (int)payload[i];
}
cout << endl;
}
ฟังก์ชันXOR_encrypt(unsigned char key)ทำการเข้ารหัส XOR โดยpayloadใช้คีย์อินพุตและเอาต์พุตผลลัพธ์ในรูปแบบเลขฐานสิบหก
ป.ป.ช
มาลองรหัส:
ก่อนอื่นฉันสร้าง shellcode เพื่อป๊อปอัปการคำนวณ
ตอนนี้ฉันใส่ที่นี่ใน. cppรหัส:
มันใช้อ็อบเจกต์เพราะโค้ดนี้จริง ๆ แล้วเป็นออบเจกต์จากไลบรารีการพัฒนามัลแวร์ของฉัน แต่ฟังก์ชันเหมือนกัน ฉันใส่ลิงก์ของไลบรารีนี้ไว้ที่นี่:
มาดำเนินการ:
ส่วนแรกแสดง shellcode จริงแล้วเข้ารหัสในส่วนที่สอง
ข้อสรุป
นี่คือหัวข้อนี้ ฉันหวังว่าคุณจะชอบและใช้เพื่อพัฒนาสคริปต์มัลแวร์ของคุณ
หากคุณชอบเนื้อหาของฉันและต้องการช่วยฉันพัฒนาโปรเจกต์นี้ไปอีกระดับ คุณสามารถสมัครเป็นสมาชิกได้โดยการบริจาคการสมัครสมาชิกรายเดือน การสนับสนุนของคุณจะช่วยให้ฉันสร้างเนื้อหาคุณภาพสูงต่อไปได้ ขอบคุณสำหรับความเอื้ออาทรของคุณ!
หากคุณไม่สามารถบริจาคได้ในเวลานี้ ก็ไม่มีปัญหาแต่อย่างใด! การสนับสนุนของคุณในการแบ่งปันโครงการของฉันและเผยแพร่คำชื่นชมอย่างมาก ฉันจะสร้างและแบ่งปันผลงานของฉันต่อไปโดยไม่คำนึง และฉันรู้สึกขอบคุณสำหรับกำลังใจและความสนใจของคุณ
ขอบคุณที่อ่านสิ่งนี้ :)
S12





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)