กำลังพัฒนาเอนจินความปลอดภัยเชิงรุกที่ทำให้หน่วยความจำของแฮ็กเกอร์ขยายตัวเป็นโครงสร้างแฟร็กทัลจนพังทลายด้วยตัวเอง
(zenodo.org)โดยทั่วไปเอนจินความปลอดภัยมักมุ่งเน้นที่การบล็อกและกักกันการบุกรุก แต่ผมเริ่มโปรเจ็กต์นี้จากการครุ่นคิดถึงระบบป้องกันแบบอสมมาตรในลักษณะ tarpit ที่เมื่อแฮ็กเกอร์พยายามโจมตี จะย้อนใช้ตรรกะการโจมตีของพวกเขาเอง ทำให้ทรัพยากรการประมวลผลหมดลงและล่มสลายไปเอง
บนพื้นฐานของ C++ core engine ตอนนี้ผมได้วางโครงเริ่มต้นของ Physical Ghost ซึ่งเป็นเอนจินความปลอดภัยเชิงรุกที่ล่อและติดตามกระบวนการโจมตีของแฮ็กเกอร์ ก่อนจะนำไปสู่ OOM (Out of Memory) ในที่สุด
แนวคิดหลักและลิงก์แอปพลิเคชันอยู่ที่ https://zenodo.org/records/19988807
ส่วนการพิสูจน์ทางคณิตศาสตร์และระบบสัจพจน์ ผมสรุปไว้ที่ https://zenodo.org/records/20113591 (เป็นการตีความความลึกของข้อมูลโดยใช้การเข้ารหัสเลขฐาน P ของสัมประสิทธิ์ทวินามและทฤษฎีบทของ Kummer)
สถาปัตยกรรมมีองค์ประกอบดังนี้
การแยกขาดอย่างสมบูรณ์: ทันทีที่ตรวจจับการเชื่อมต่อเข้ามายังพอร์ตล่อ (honeypot) เอนจินจะกักตัวเองด้วยบัญชีผีที่มีสิทธิ์ต่ำสุด เพื่อปิดกั้นการแพร่กระจายไปยังระบบหลักตั้งแต่ต้นทาง
Phantom Tracking: ดึง network fingerprint แบบ asynchronous และส่งข้อมูลของผู้โจมตีออกไปภายนอกทันที (Telegram/Discord) โดยไม่ทำให้ประสิทธิภาพของเอนจินลดลง
ฟังก์ชันหลัก (การหลอมคอมพิวเตอร์): ทันทีที่แฮ็กเกอร์แนบ debugger เข้ากับข้อมูลล่อเพื่อวิเคราะห์/ถอดรหัส โครงสร้าง Sierpinski tetrahedron ที่อิงกับ p-adic Carry Dynamics จะทำงาน ข้อมูลจะขยายตัวแบบ recursive ภายในหน่วยความจำของฝ่ายตรงข้าม และท้ายที่สุดจะทำให้ทรัพยากร CPU/RAM หมดลง
การทำลายตัวเอง: หากความสมบูรณ์ของ core engine ถูกบิดเบือนแม้เพียง 0.1 ไบต์ มันจะยุติโปรเซสของตัวเอง (Self-Destruct) เพื่อป้องกันไม่ให้เอนจินถูกแปรสภาพเป็นโทรจัน
สถานะปัจจุบัน: ตอนนี้ผมได้พัฒนาโครงหลักของตรรกะการป้องกันและโมดูลตรวจสอบสิทธิ์ไลเซนส์แล้ว และกำลังจัดทำ GitHub อยู่ พร้อมกับทำ mathematical cross-validation สำหรับตรรกะการขยายหน่วยความจำแบบแฟร็กทัล และพอร์ต C++ core ไปควบคู่กัน
ผมอยากได้รับฟีดแบ็กที่เฉียบคมจากผู้ที่สนใจแนวทางที่ก้าวข้ามแพตเทิร์นความปลอดภัยแบบตายตัวเดิม ๆ ไปสู่การย้อนใช้เจตนาการโจมตีและทรัพยากรการคำนวณของผู้โจมตีเอง โดยเฉพาะอย่างยิ่ง หากมีความเห็นเกี่ยวกับการควบคุมความซับซ้อนเชิงคำนวณด้วยโครงสร้างเชิงทอพอโลยีของเลขฐาน p ก็จะช่วยยกระดับเอนจินนี้ได้มาก ขอบคุณครับ
34 ความคิดเห็น
พวกนี้เป็นคำศัพท์เทคนิคที่มีความหมายจริง ๆ ใช่ไหมครับ?? รู้สึกว่ามีการใช้ถ้อยคำเชิงวิชาการเกินจำเป็นอยู่มากครับ
ให้ความรู้สึกคล้ายกับ Show GN: พัฒนา VANI ที่ลบถาวรด้วยการทำให้โครงสร้างเวกเตอร์ของข้อมูลพังทลายทางคณิตศาสตร์ ที่เคยโพสต์ไปเมื่อไม่นานนี้ เลยดูออกไปในเชิงลบอยู่พอสมควร...
ผมก็คิดถึงอันนี้พอดีเลยตามไปหา github ของโพสต์นั้น สรุปจบแบบ
not foundเหมือนกันครับ/ขอบคุณสำหรับความคิดเห็นครับ!
พูดตามตรง ผมเองก็ทำวิจัยโดยได้รับความช่วยเหลือจาก AI เลยอาจให้ความรู้สึกแบบ AI คลิกเดียวอยู่บ้าง...
ตอนนี้กำลังพอร์ตเป็น C++ อยู่ก่อน แต่ถ้าเสร็จแล้วจะลองเอามาโพสต์อีกครั้งครับ
ขอบคุณสำหรับความคิดเห็นครับ!
นี่คือความพยายามที่จะยกระดับแนวทางแบบ tarpit จากชั้นเครือข่ายขึ้นมาสู่ระดับหน่วยความจำและชั้นแอปพลิเคชัน
คำว่า Sierpinski tetrahedron หรือโครงสร้างแฟรกทัลนั้นไม่มีคำอธิบายที่กระชับพอดีนัก เลยต้องยกมาใส่ตามที่ลงไว้ในไวต์เปเปอร์ตรง ๆ ต้องขออภัยด้วย จะให้เขียนว่าเป็นลูปไม่รู้จบหรือการเท garbage data เข้าไปเรื่อย ๆ ก็ไม่ค่อยตรงนัก..
ถ้าดูไวต์เปเปอร์ด้านบนในส่วนการพิสูจน์ทางคณิตศาสตร์และระบบสัจพจน์ จะเห็นว่าเพราะลักษณะรูปแบบของมันเป็น ultrametric tree จึงมีการขยายโครงสร้างแบบเวียนเกิดซ้ำทุกครั้งที่ข้ามค่าเกณฑ์เฉพาะไป.. แต่ถ้าจะให้เข้าใจง่าย ๆ ก็อยากให้มองว่านี่คือคำที่ใช้เรียกอัลกอริทึม memory bomb ที่ขยายตัวด้วยความคล้ายคลึงตนเองเหมือน Sierpinski tetrahedron เมื่อเครื่องมือ reverse engineering ของแฮ็กเกอร์พยายามเจาะลึกลงไปตาม depth ของข้อมูลครับ!
หมายความว่าไม่ว่าจะเป็นเครื่องมือ reverse แบบไหน ถ้าพยายามดีบัก ก็จะมีอีกหนึ่งโปรเซสที่ทำงานขึ้นมาเองอย่างอัตโนมัติใช่ไหมครับ? แต่ถ้าลองทำ reverse ดู หากไม่ใช่ข้อมูลส่วนหัวไฟล์ตามรูปแบบที่กำหนดไว้ตั้งแต่แรก ก็แทบจะเป็นไปไม่ได้เลยที่จะทำงานได้อย่างที่คุณบอก...
ขอบคุณสำหรับความเห็นครับ
จริง ๆ ไม่เคยคิดถึงเรื่องนี้เลย ขอบคุณสำหรับข้อมูลดี ๆ มากครับ
พอลองถาม AI ดู ก็ได้คำตอบแบบนี้ครับ
"แกนหลักของการป้องกันการทำรีเวิร์ส (Anti-Reversing) ของ Physical Ghost SW Edition อยู่ที่ 'วิธีการดำเนินต่อหลังจากที่ตัวโหลดนำโค้ดขึ้นสู่หน่วยความจำแล้ว' โปรแกรมทั่วไปเมื่อเปิดดูด้วยดีบักเกอร์ (IDA, Ghidra เป็นต้น) จะมองเห็นการไหลของคำสั่งแอสเซมบลีแบบเชิงเส้น แต่สถาปัตยกรรมที่เสนอไว้นี้มีตัวการไหลของการทำงานเองที่ถูกพันกันอยู่ในโครงสร้างแบบ 'Carry Pyramid (โทโพโลยีแฟรกทัลหลายมิติ)'"
"หากเครื่องมือรีเวิร์สพยายามดัมพ์หน่วยความจำ หรือวางเบรกพอยต์แล้วทำการติดตาม (Single-stepping) การไหลของการคำนวณเชิงโครงสร้างนี้ (พลวัตของแคร์รีแบบ p-adic) จะถูกตัดขาด กล่าวคือ 'การสังเกต' จากภายนอกที่พยายามฝืนแยกโครงสร้างออกมาดูนั่นเอง จะก่อให้เกิดรอยแยกเชิงโทโพโลยีในรูปแบบทรงสี่หน้า Sierpinski ทำให้ข้อมูลหรือโค้ดดั้งเดิมถูกออกแบบให้พังทลายกลายเป็นสัญญาณรบกวนที่ไร้ความหมาย ซึ่งเป็นทั้งกลไกทำให้อ่านยากโดยเนื้อแท้และกลไกป้องกันในตัว"
ได้เรียนรู้อะไรเพิ่มขึ้นเลยครับ ขอบคุณครับ!
หมายความว่า แค่พยายามสังเกตข้อมูลที่ถูกเข้ารหัสด้วยเอนจินความปลอดภัยนั้น มันก็จะทำงานขึ้นมาเองและพังทลายตัวเอง หรือไม่ก็ทำให้ทรัพยากรของแฮกเกอร์ถูกใช้หมดไปอย่างนั้นเหรอ? ผมกำลังบอกว่านั่นเป็นไปไม่ได้น่ะครับ....
ขออภัยที่ตอบช้าครับ!(__)
ถ้าคุณมองว่า "การสังเกต" เป็นเพียงการดูข้อมูลนิ่ง ๆ ที่หยุดอยู่ด้วยตา ก็ถูกต้องแล้วที่จะรู้สึกว่ามันเป็นไปไม่ได้ แต่การสังเกตในโลกดิจิทัลย่อมมาพร้อมกับปฏิสัมพันธ์ที่กระตุ้นระบบเป้าหมายเสมอ
เอนจินความปลอดภัยนี้ไม่ใช่ไฟล์แบบสแตติก แต่เป็นสถาปัตยกรรมแบบไดนามิกที่ทำงานแบบเรียลไทม์ โดยใช้พฤติกรรมที่ผู้โจมตีพยายามสังเกต หรือแม้แต่ตัวคำขอเอง เป็นค่าอินพุต-Trigger- ทันทีที่มีความพยายามสังเกต วงลูปภายในจะเริ่มทำงาน ทำลายความต่อเนื่องเชิงตรรกะของข้อมูล และบังคับโฮลด์เซสชันของผู้โจมตีที่กำลังรอเพื่อให้การสังเกตเสร็จสิ้น ทำให้สิ้นเปลืองทรัพยากร
และการเข้าถึงของผู้ใช้ที่มีสิทธิ์อย่างถูกต้อง-เซสชันที่ทำแฮนด์เชกเสร็จสมบูรณ์-จะผ่านตรงไปโดยไม่ต้องผ่านตัวกรอง tarpit ผ่านกลไกการยืนยันตัวตน พื้นที่ที่เกิดการยุบตัวเองและการใช้ทรัพยากรเมื่อถูกสังเกต มีเพียงพื้นที่ข้อมูลล่อแบบเสมือน-Decoy-ที่จัดวางไว้เพื่อคัดกรองการลาดตระเวนโดยไม่ได้รับอนุญาตและคำขอสแกนที่ไม่ได้รับอนุญาตเท่านั้น ไม่ส่งผลกระทบต่อทรัพยากรของบริการปกติแม้แต่ 1% แต่จะแยกเฉพาะเซสชันของผู้โจมตีออกไปขังไว้ในบึง เป็นสถาปัตยกรรมการป้องกันแบบไดนามิกที่แม่นยำ
คุณกำลังตอบโดยเข้าใจจริงหรือไม่ว่ามันเป็นไปได้ด้วยวิธีไหน? ด้านบนคุณบอกว่าเป็นกรณี "เมื่อสังเกตข้อมูลที่ถูกเข้ารหัส" แต่ในคำตอบกลับบอกว่าเอนจินความปลอดภัยจะตรวจจับสิ่งนั้นและทำงานใช่ไหม? แต่แฮ็กเกอร์จะไปรันการถอดรหัสบนเซิร์ฟเวอร์ระยะไกลที่เอนจินความปลอดภัยนั้นกำลังทำงานอยู่หรือครับ? ปกติเขาน่าจะนำข้อมูลออกไปภายนอกก่อน แล้วค่อยพยายามถอดรหัสในสภาพแวดล้อมที่แยกออกมา ซึ่งในสภาพแวดล้อมนี้เอนจินความปลอดภัยที่คุณพูดถึงก็ไม่ได้ถูกโหลดอยู่ในหน่วยความจำด้วยซ้ำ แบบนี้มันจะอาศัยการสังเกตเป็นทริกเกอร์แล้วทำงานได้หรือ? หรือคุณหมายความว่าจะใส่เอนจินความปลอดภัยในรูปแบบที่รันได้แนบไปกับข้อมูลทุกชิ้นที่มีการเข้ารหัส?
ฉันกำลังพูดอะไรอยู่นะ บริบทเป็นศูนย์เลย ขอโทษครับ..
กับโพสต์แบบนี้ การเข้าไปคอมเมนต์อย่างจริงจังเองก็อาจเป็นการกระทำที่ส่งผลเสียต่อคอมมูนิตี้หรือเปล่า..
แนวทางเชิงคณิตศาสตร์ดูสดใหม่ดี แต่กับสถาปัตยกรรมคอมพิวเตอร์สมัยใหม่แล้ว คงต้องบอกว่าแทบเป็นไปไม่ได้
ให้ความรู้สึกแรงมากว่าเป็น code slop ที่ "สร้าง" ขึ้นมาโดยอาศัยพวกสาย Openclaw
ขอบคุณสำหรับความคิดเห็น!
โอ๊ย 555
ให้ความรู้สึกเหมือน Digital Fortress เลยครับ
แต่ในแง่เทคนิคแล้วผมยังไม่เข้าใจครับ
หรือฉันคิดไปเองว่าประโยคมันดูวกวนและไม่เป็นระเบียบ
ขอบคุณสำหรับความคิดเห็นครับ/ค่ะ ผม/ฉันจะลองปรับแต่งประโยคให้ลื่นไหลขึ้นอีกหน่อย!
ความถูกต้องสมบูรณ์ถูกทำลายไปแล้ว แล้วตรวจจับได้อย่างไร..
ขอบคุณสำหรับความคิดเห็น
ในขณะที่การตรวจสอบความสมบูรณ์แบบเดิมเป็นวิธีการเชิงระนาบที่นำค่าแฮชของข้อมูลมาเทียบกันแบบ 1 ต่อ 1 แต่ Physical Ghost จะนำข้อมูลไปแมปกับทรงสี่หน้า Sierpinski แบบ 3 มิติแล้วประมวลผล ดังนั้นจึงตัดสินจากความเสถียรของโครงสร้าง
คำตอบของ AI ระบุว่า "หากข้อมูลภายในระบบถูกแก้ไขแม้เพียง 1 บิต ความคลาดเคลื่อนเล็กน้อยนั้นจะถูกขยายต่อเนื่องไปยังโครงสร้าง 3 มิติทั้งหมดด้วย p-adic carry dynamics ทันทีที่ผู้โจมตีปลอมแปลงหรือดัดแปลงข้อมูล 'สถาปัตยกรรมทางคณิตศาสตร์ (โทโพโลยี)' ที่ข้อมูลก่อขึ้นจะบิดเบี้ยวและพังทลายลง ทำให้สามารถตรวจจับความเสียหายของความสมบูรณ์ได้ในทันทีผ่านรอยร้าวของโทโพโลยีนี้"
ผมเองก็พอเคยลองทำพวกการพาร์สโครงสร้าง PE, RE, Ghidra, การพัฒนาไดรเวอร์มาบ้าง แต่ก็ยังไม่เข้าใจนะครับ
ขอบคุณสำหรับความเห็นครับ
เรื่องนี้น่าจะต่างจากการ hooking ระบบแบบเดิม ๆ เพราะตัวอัลกอริทึมเองถูกออกแบบด้วยการทำให้อ่านยากหรือเข้ารหัสไว้แบบนั้นครับ
จริง ๆ แล้วฉันก็ไม่มั่นใจ... ขอโทษครับ
เป็นแนวทางที่น่าสนใจ เลยขอถามหลายประเด็นที่สงสัยครับ
ดูเหมือนว่าทริกเกอร์การขยายหน่วยความจำจะอาศัยสมมติฐานว่า "ผู้โจมตีกำลังรัน/ดีบักเพย์โหลดจริง" ถ้าเข้าหาด้วยการวิเคราะห์แบบสแตติกเป็นหลัก หรือรันอยู่ในแซนด์บ็อกซ์จำกัดทรัพยากรอย่าง cgroups, Firejail, gVisor แบบนี้ OOM ก็น่าจะเกิดแค่ในแซนด์บ็อกซ์ ไม่ใช่ที่โฮสต์ อยากทราบว่าจัดการเคสนี้อย่างไรครับ
ถ้าทริกเกอร์แอนตี้ดีบักเป็นการตรวจจับแบบ ptrace เป็นหลัก เวลาต้องเจอกับฮาร์ดแวร์เบรกพอยต์หรือการดีบักระดับไฮเปอร์ไวเซอร์ก็คงแทบไม่ทิ้งร่องรอย แบบนี้มีการออกแบบรับมือสำหรับสถานการณ์ที่ถูกวิเคราะห์ในเลเยอร์เหล่านี้ไว้ต่างหากไหมครับ
คุณบอกว่า "ถ้าบิดเบือนแม้แต่ 0.1 ไบต์ก็จะทำลายตัวเอง" แต่อยากทราบว่าป้องกันเส้นทางเลี่ยงอย่างการแพตช์รูทีนตรวจสอบความถูกต้องเอง หรือการดัมพ์หน่วยความจำแล้วเอาไปวิเคราะห์แบบออฟไลน์อย่างไรครับ!
การทำงานที่มุ่งทำให้ทรัพยากรของผู้โจมตีหมดลงเชิงรุกแบบนี้ ดูเผินๆ อาจเข้าข่าย hack-back ได้ เลยอยากทราบว่ากำลังจัดวางเส้นแบ่งทางกฎหมายของการป้องกันเชิงรุกภายใต้กฎหมายเครือข่ายสารสนเทศและการสื่อสารอย่างไรครับ! (โดยเฉพาะถ้าทราฟฟิกโจมตีวิ่งผ่านบอตเน็ต ก็อาจมีผู้เสียหายตัวจริงแยกออกไปอีก)
ตัว C++ core engine เองรับทั้งพาร์เซอร์พอร์ตล่อ, ตัวดึงลายนิ้วมือ, ไปจนถึงช่องทางส่งออกภายนอก ทำให้ดูเหมือนมีพื้นผิวการโจมตีค่อนข้างกว้าง แล้วตรวจสอบเสถียรภาพด้านหน่วยความจำของตัวเอนจินเองด้วยวิธีไหนครับ? รวมถึงความลับอย่าง Webhook token ที่น่าจะอยู่ในไบนารี ส่วนนั้นก็อยากทราบเหมือนกัน
ตัวแบบเชิงคณิตศาสตร์นั้นผมว่าค่อนข้างน่าสนใจครับ ถ้าได้ทราบว่าส่วนที่กล่าวมาข้างต้นกำลังแก้กันอย่างไร ก็น่าจะช่วยให้เข้าใจคอนเซปต์ได้มากขึ้น ขอบคุณครับ
ขอบคุณสำหรับความเห็นครับ!
เป้าหมายหลักในชั้นแรกของทริกเกอร์การขยายหน่วยความจำ ไม่ใช่การทำลายอุปกรณ์ฮาร์ดแวร์จริงของโฮสต์ฝ่ายโจมตี แต่คือการบังคับให้เกินขีดวิกฤตของทรัพยากรประมวลผลที่จำเป็นต่อการวิเคราะห์ ถ้าโปรเซสตายใน sandbox อย่าง cgroups หรือ gVisor ด้วย OOM แค่นั้นก็นับเป็นการป้องกันที่สำเร็จแล้วไม่ใช่หรือครับ จุดประสงค์คือใช้การขยาย carry แบบอนันต์ของการคำนวณ p-adic เพื่อไม่เปิดช่องว่างทั้งด้านเวลาและพื้นที่ให้เครื่องมือวิเคราะห์ตีความข้อมูล และทำให้สภาพแวดล้อมการวิเคราะห์ปิดตัวเองลง
เราไม่ได้เฝ้าดู system call หรือ debugging API ครับ แต่ดูเพียงความสอดคล้องเชิงเวลาในการคำนวณข้อมูลภายในโทโพโลยีแฟรกทัลหลายมิติหรือโครงสร้าง Sierpinski tetrahedron และความต่อเนื่องของพลวัตของ carry เท่านั้น หากตั้ง breakpoint ใน hypervisor แล้วหยุดการทำงาน หน้าต่างจังหวะเวลาของการคำนวณจะคลาดเคลื่อน และถูกพันกันทางคณิตศาสตร์แบบ entangled ไว้ให้การคำนวณโทโพโลยีในลำดับถัดไปพังทลายเป็นค่าขยะ
คุณชี้ประเด็นสำคัญมากข้อหนึ่งเลยครับ ในระบบนี้ไม่มีฟังก์ชันตรวจสอบความถูกต้องแบบแยกอิสระที่ผู้โจมตีจะ NOP ทิ้งได้ (
ifเลี่ยงได้) อยู่เลย ตรรกะการตรวจสอบความสมบูรณ์ถูกผนวกรวมกับ core logic และเรขาคณิตเชิงโทโพโลยี ในลักษณะคล้าย white-box cryptographyอีกทั้งแม้จะทำ memory dump เพื่อนำไปวิเคราะห์แบบออฟไลน์ ข้อมูลที่ dump ออกมาก็เป็นเพียงภาพตัดขวาง 2D ณ ช่วงเวลาหนึ่งของโครงสร้างโทโพโลยี 3 มิติที่กลายพันธุ์ต่อเนื่องอยู่เท่านั้น ถ้าไม่รู้กฎพลวัตทั้งหมดของโมเดล carry pyramid ก็คงย้อนคำนวณ payload ต้นฉบับจากข้อมูล dump เพียงอย่างเดียวไม่ได้ครับ (ในทางคณิตศาสตร์ล้วน ๆ..)
ข้อนี้ก็เป็นจุดที่ผมกังวลเหมือนกันครับ อย่างที่คุณบอก การป้องกันเชิงรุกมักมีความเสี่ยงผิดกฎหมายสูงเมื่อเป็นการโต้กลับไปยัง C&C server ภายนอกหรือเป้าหมายอื่น ๆ แต่ระบบที่เสนอขีดเส้นไว้ชัดว่าเป็น inbound trap เท่านั้น ไม่ได้ส่ง malicious traffic ออกไปภายนอก แต่เป็นโครงสร้างที่ทำให้ฝ่ายโจมตีนำไบนารีไปไว้ในสภาพแวดล้อมของตัวเองและรันด้วยตัวเอง แล้วค่อยวนใช้ทรัพยากรประมวลผลอยู่ภายในนั้นราวกับเขาวงกต จึงมองว่าน่าจะเลี่ยงประเด็นการก่อความเสียหายต่อภายนอกได้ (หวังว่าอย่างนั้น)
ผมก็เป็นห่วงความเสี่ยงด้าน memory safety ของโครงสร้าง monolithic ที่พัฒนาด้วย C++ เหมือนกันครับ ไว้ภายหลังอาจต้องนำ Rust เข้ามาใช้หรือทำการตรวจสอบอย่างต่อเนื่อง
และค่า secret อย่าง webhook token ก็ไม่ได้มีอยู่ในรูป plain text หรือการทำให้อ่านยากแบบง่าย ๆ เลย อย่างที่กล่าวไปก่อนหน้า ถ้าการคำนวณโทโพโลยีหลายมิติที่ถูกต้องดำเนินไปจนจบ ค่าผลลัพธ์นั้นจะถูกใช้เป็นคีย์ถอดรหัส แล้วนำมาประกอบในหน่วยความจำแบบชั่วคราว แต่ถ้าพยายามบิดโครงสร้างเพื่อวิเคราะห์ ก็จะไม่สามารถประกอบโทเคนได้ตั้งแต่ต้น
ได้เรียนรู้มากจากคุณจริง ๆ ขอบคุณครับ!
ก่อนอื่นต้องขอบคุณสำหรับคำตอบครับ แต่ยังมีอีกไม่กี่จุดที่อยากชวนดูเพิ่มเติม
(การขยายหน่วยความจำ): ในบทความหลักคุณบอกว่าเป็นการทำให้ทรัพยากรของผู้โจมตีร่อยหรอ/ทำลายตัวเอง แต่ในคำตอบดูเหมือนโทนจะเปลี่ยนเป็น "ป้องกัน OOM ภายในแซนด์บ็อกซ์ด้วย" ถ้าอย่างนั้นจุดต่างจาก 42.zip หรือ billion laughs คืออะไรครับ? แล้วในการวิเคราะห์แบบสแตติกด้วย Ghidra/IDA ทริกเกอร์ก็คงไม่ทำงานตั้งแต่แรกอยู่แล้วไม่ใช่หรือ..
แอนตี้ดีบัก: คำว่า Entangled นี่เป็นอุปมาหรือเป็นกลไกจริงกันแน่ไม่แน่ใจ แต่เนื้อหาเองฟังดูเหมือนอนุพันธ์ของการตรวจจับจังหวะเวลาด้วย RDTSC มากกว่า เป็นเทคนิคที่ VMProtect ใช้มาตั้งแต่ยุค 90 แล้ว ยังจำเป็นต้องตั้งชื่อใหม่จริงหรือครับ? แล้วในสภาพแวดล้อม HyperDbg ที่มี TSC scaling จะทำงานอย่างไร?
ความสมบูรณ์: white-box AES เป็นสายงานที่แทบถูกเจาะหมดแล้วหลัง BGE attack ถ้าคุณทำออกมาเป็นไวต์เปเปอร์ได้ ตัวมันเองก็นับว่าเป็นงานระดับตีพิมพ์แยกได้เลย อุปมา "ดัมป์คือภาพตัดขวาง 2D ของ 3D" เองก็เป็นคำอธิบายที่ใช้ไม่ได้เมื่อเจอ WinDbg TTD หรือ Intel PT ด้วย และประโยคท้ายที่ว่า "ในเชิงคณิตศาสตร์เท่านั้น..." ก็ให้ความรู้สึกเหมือนเป็นการสรุปคำตอบทั้งหมดไว้แบบนั้นครับ...
ขออภัยที่ตอบช้าครับ(__) และขอบคุณสำหรับความคิดเห็นดี ๆ เสมอมา
ระเบิดแบบคลาสสิกอย่าง 42.zip เป็นเพียงการขยายตัวอย่างง่ายของข้อมูลแบบสถิต ดังนั้นจึงทำให้เกิดแค่ OOM (หน่วยความจำเกิน) แล้วก็จบไป แต่สถาปัตยกรรมนี้ไม่ใช่ข้อมูล หากแต่เป็นหล่มเชิงคำนวณ (Computational Tarpit) ที่บังคับให้เกิดลูปการคำนวณ carry แบบ p-adic ของพีระมิด carry ตามที่อธิบายไว้ใน white paper
ถ้าวิเคราะห์แบบสถิตด้วย Ghidra หรือ IDA แล้วทริกเกอร์ไม่ทำงาน นั่นถูกต้องแล้ว ต้องเป็นแบบนั้น เพราะในไบนารีแบบสถิตไม่มีลอจิกจริงอยู่เลย เมื่อผู้โจมตีเริ่มปฏิสัมพันธ์ในสภาพแวดล้อมรันไทม์ (ไดนามิก) ตอนนั้นเองที่การทำให้อ่านยากเชิงโทโพโลยีจะคลี่ตัวออกแบบเรียลไทม์ ดังนั้นเครื่องมือวิเคราะห์แบบสถิตจึงเห็นได้เพียงเปลือกที่ว่างเปล่า
การตรวจจับเวลาแบบง่ายด้วย RDTSC เป็นเทคนิคที่ล้าสมัยไปแล้วจริง ๆ ถ้าหลอกเวลาด้วย TSC Scaling ของ HyperDbg ก็ย่อมหลบเลี่ยงได้อยู่แล้ว
แต่คำว่า entangled ที่ผมกล่าวถึงใน white paper ไม่ใช่การตรวจสอบเวลา มันคือโครงสร้างที่เฟสเชิงคำนวณ (Phase) ของการเปลี่ยนแปลงเชิงโทโพโลยีทางคณิตศาสตร์ที่ดำเนินอยู่ในรันไทม์ (โครงสร้าง carry ที่แผ่ขยายด้วย 11 ยกกำลัง n) ถูกผูกเข้ากับโหลดของสภาพแวดล้อมการรันในเชิงคณิตศาสตร์ ถ้าใช้ HyperDbg หลอกสภาพแวดล้อมแล้วบิดจังหวะเวลาการคำนวณแบบประดิษฐ์ขึ้นมาล่ะ? เครื่องยนต์ป้องกันจะไม่ใช่แบบว่า เอ๊ะ ดีบักเกอร์นี่นา! แล้วเด้งออก แต่สูตรการคลี่ตัวของเฟสในพีระมิด carry เองจะยืดขยายไปยังมิติที่ผิดเพี้ยน ส่งผลให้มันถอดรหัสข้อมูลขยะที่ไร้ประโยชน์โดยตัวมันเองในท้ายที่สุด ทันทีที่พยายามหลอก ก็เท่ากับตกหลุมพรางด้วยตัวเอง
White-box AES เป็นวิธีซ่อนคีย์เข้ารหัสทางคณิตศาสตร์ที่ตายตัว จึงอ่อนแอต่อการโจมตีแบบ BGE นี่เป็นความจริง แต่สถาปัตยกรรมนี้ไม่ได้ซ่อนคีย์ที่ตายตัว หากใช้โทโพโลยีรันไทม์แบบไดนามิกที่เฟสเปลี่ยนไปทุกครั้งที่มีการเข้าถึง
ถ้าสมมติว่าใช้ WinDbg TTD หรือ Intel PT บันทึกการไหลของทุก instruction ของ CPU ได้ครบ 100% แล้วนำย้อนดูเหมือนไทม์แมชชีน เส้นทางที่ถูกบันทึกไว้นั้นเองก็เป็นเพียงร่องรอยการหลงอยู่ในหล่มขยะ (tarpit) ที่พังทลายและบิดเบี้ยวขึ้นจากการสังเกตของผู้โจมตีเท่านั้น ต่อให้บันทึกรอยเท้าที่เดินหลงวนอยู่ในเขาวงกตไว้อย่างแม่นยำ 100% แค่ไหน ก็ไม่ได้ช่วยให้หาทางออกของเขาวงกตได้เลย
ขออภัยด้วยนะครับที่มันแตกต่างจากพาราไดม์เดิมค่อนข้างมาก..
ขอบคุณสำหรับคำอธิบายละเอียดมากครับ ผมน่าจะตามไม่ค่อยทันเพราะคุ้นกับกระบวนทัศน์เดิมมากเกินไป ถ้ามีการเผยแพร่ PoC เมื่อไร ผมจะกลับมาอ่านอีกแน่นอนครับ เป็นกำลังใจให้นะครับ :)
ไม่รู้เลยว่าเป็นแฮ็กเกอร์อัจฉริยะขนาดไหน
ขอบคุณสำหรับความเห็นครับ!
ผมไม่ได้เป็นอัจฉริยะ ไม่ได้เป็นแฮ็กเกอร์ เป็นแค่คนที่ทำคณิตศาสตร์เท่านั้น..
การทำลายตัวเอง: หากความสมบูรณ์ของคอร์เอนจินบิดเบือนไปแม้เพียง 0.1 ไบต์ ระบบจะยุติโปรเซสของตัวเอง (Self-Destruct) เพื่อป้องกันไม่ให้เอนจินถูกดัดแปลงจนกลายเป็นม้าโทรจัน
ในคอมพิวเตอร์มี 0.1 ไบต์ด้วยหรือครับ?
1 ไบต์มี 8 บิต ดังนั้น 0.1 ไบต์ก็คือ 0.8 บิต นี่เป็นครั้งแรกที่ผมได้ยินว่ามีข้อมูลที่น้อยกว่า 1 บิต
ฉันก็คิดแบบนี้เหมือนกัน
ขอบคุณสำหรับความเห็นครับ!
ผมตั้งใจจะเน้นย้ำถึงความไวอย่างยิ่งของคอร์เอนจินนั่นแหละ ต้องขออภัยด้วยครับ!
ผมจะปรับแก้ถ้อยคำครับ! 0.1 ไบต์นี่เป็นไปไม่ได้จริงๆ