วิธีการค้นพบกระบวนการ Linux ที่ซ่อนอยู่ด้วย Unhide



ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา

ในขณะที่ GNU / Linux เป็นระบบปฏิบัติการที่มีความปลอดภัยสูง แต่หลาย ๆ คนก็ถูกล่อลวงไปสู่ความปลอดภัยที่ผิดพลาด พวกเขามีความคิดที่ผิดว่าจะไม่มีอะไรเกิดขึ้นได้เพราะพวกเขาทำงานจากสภาพแวดล้อมที่ปลอดภัย เป็นความจริงที่ว่ามีมัลแวร์เพียงเล็กน้อยสำหรับระบบ Linux แต่ในที่สุดก็ยังมีความเป็นไปได้ที่การติดตั้ง Linux อาจถูกบุกรุกได้ หากไม่มีอะไรอื่นการพิจารณาความเป็นไปได้ของรูทคิทและการโจมตีอื่น ๆ ที่คล้ายกันเป็นส่วนสำคัญของการดูแลระบบ รูทคิตหมายถึงชุดเครื่องมือที่ผู้ใช้บุคคลที่สามหลังจากที่พวกเขาเข้าถึงระบบคอมพิวเตอร์ที่พวกเขาไม่สามารถเข้าถึงได้อย่างถูกต้อง จากนั้นสามารถใช้ชุดนี้เพื่อแก้ไขไฟล์โดยที่ผู้ใช้ที่ถูกต้องไม่ทราบ แพ็คเกจยกเลิกการซ่อนมอบเทคโนโลยีที่จำเป็นในการค้นหาซอฟต์แวร์ที่ถูกบุกรุกอย่างรวดเร็ว



Unhide อยู่ในที่เก็บของ Linux ดิสทริบิวชันหลัก ๆ ส่วนใหญ่ การใช้คำสั่งตัวจัดการแพ็คเกจเช่น sudo apt-get install unhide ก็เพียงพอที่จะบังคับให้ติดตั้งบน Debian และ Ubuntu เซิร์ฟเวอร์ที่มีการเข้าถึง GUI สามารถใช้ Synaptic Package Manager การแจกแจง Fedora และ Arch มีการยกเลิกการซ่อนเวอร์ชันที่สร้างไว้ล่วงหน้าสำหรับระบบการจัดการแพ็คเกจของตนเอง เมื่อเลิกซ่อนถูกติดตั้งแล้วผู้ดูแลระบบควรสามารถใช้งานได้หลายวิธี



วิธีที่ 1: รหัสกระบวนการ Bruteforcing

เทคนิคพื้นฐานที่สุดเกี่ยวข้องกับ bruteforcing แต่ละ ID กระบวนการเพื่อให้แน่ใจว่าไม่มีการซ่อนจากผู้ใช้ หากคุณไม่ได้เข้าถึงรูทให้พิมพ์ sudo unhide brute -d ที่พร้อมต์ CLI ตัวเลือก d เพิ่มการทดสอบเป็นสองเท่าเพื่อลดจำนวนผลบวกเท็จที่รายงาน



เอาต์พุตเป็นพื้นฐานอย่างยิ่ง หลังจากข้อความลิขสิทธิ์การยกเลิกการซ่อนจะอธิบายการตรวจสอบที่ดำเนินการ จะมีบรรทัดระบุว่า:

[*] การเริ่มต้นการสแกนโดยใช้แรงดุร้ายกับ PIDS ด้วยส้อม ()

และอีกคนระบุ:



[*] เริ่มต้นการสแกนโดยใช้กำลังดุร้ายกับ PIDS ด้วยฟังก์ชัน pthread

หากไม่มีผลลัพธ์อื่น ๆ แสดงว่าไม่มีเหตุให้ต้องกังวล หากรูทีนย่อย brute ของโปรแกรมพบสิ่งใดก็จะรายงานสิ่งต่างๆเช่น:

พบ HIDDEN PID: 0000

ศูนย์ทั้งสี่จะถูกแทนที่ด้วยตัวเลขที่ถูกต้อง หากอ่านเพียงว่าเป็นกระบวนการชั่วคราวนี่อาจเป็นผลบวกลวง อย่าลังเลที่จะทำการทดสอบหลาย ๆ ครั้งจนกว่าจะได้ผลลัพธ์ที่สะอาด หากมีข้อมูลเพิ่มเติมอาจต้องมีการตรวจสอบติดตาม หากคุณต้องการบันทึกคุณสามารถใช้สวิตช์ -f เพื่อสร้างไฟล์บันทึกในไดเร็กทอรีปัจจุบัน โปรแกรมเวอร์ชันที่ใหม่กว่าเรียกไฟล์นี้ว่า unhide-linux.log และมีเอาต์พุตข้อความธรรมดา

วิธีที่ 2: การเปรียบเทียบ / proc และ / bin / ps

คุณสามารถยกเลิกการซ่อนโดยตรงเพื่อเปรียบเทียบรายการกระบวนการ / bin / ps และ / proc แทนเพื่อให้แน่ใจว่าทั้งสองรายการที่แยกจากกันในโครงสร้างไฟล์ Unix ตรงกัน หากมีบางอย่างผิดปกติโปรแกรมจะรายงาน PID ที่ผิดปกติ กฎ Unix กำหนดว่ากระบวนการที่กำลังรันต้องแสดงหมายเลข ID ในสองรายการนี้ พิมพ์ sudo unhide proc -v เพื่อเริ่มการทดสอบ การตรึงบน v จะทำให้โปรแกรมอยู่ในโหมด verbose

วิธีนี้จะส่งคืนข้อความแจ้งว่า:

[*] การค้นหากระบวนการที่ซ่อนอยู่ผ่านการสแกน / proc stat

หากมีสิ่งผิดปกติเกิดขึ้นสิ่งนี้จะปรากฏขึ้นหลังข้อความบรรทัดนี้

วิธีที่ 3: การรวมเทคนิค Proc และ Procfs

หากจำเป็นคุณสามารถเปรียบเทียบรายการโครงสร้างไฟล์ / bin / ps และ / proc Unix ได้จริงในขณะเดียวกันก็เปรียบเทียบข้อมูลทั้งหมดจากรายการ / bin / ps กับรายการ procfs เสมือน ซึ่งจะตรวจสอบทั้งกฎโครงสร้างไฟล์ Unix รวมถึงข้อมูล procfs พิมพ์ sudo unhide procall -v เพื่อทำการทดสอบนี้ซึ่งอาจใช้เวลาพอสมควรเนื่องจากต้องสแกนสถิติ / proc ทั้งหมดรวมทั้งทำการทดสอบอื่น ๆ เป็นวิธีที่ยอดเยี่ยมในการตรวจสอบให้แน่ใจว่าทุกอย่างบนเซิร์ฟเวอร์เป็นแบบ copasetic

2016-11-02_222832

วิธีที่ 4: การเปรียบเทียบผลลัพธ์ procfs กับ / bin / ps

การทดสอบก่อนหน้านี้เกี่ยวข้องกับแอปพลิเคชันส่วนใหญ่มากเกินไป แต่คุณสามารถเรียกใช้การตรวจสอบระบบไฟล์ proc โดยอิสระเพื่อความสะดวก พิมพ์ sudo unhide procfs -m ซึ่งจะทำการตรวจสอบเหล่านี้รวมถึงการตรวจสอบอื่น ๆ อีกมากมายที่ให้มาโดยการตรึง on -m

นี่ยังคงเป็นการทดสอบที่ค่อนข้างเกี่ยวข้องและอาจใช้เวลาสักครู่ ส่งคืนเอาต์พุตสามบรรทัดแยกกัน:

2016-11-02_223011

โปรดทราบว่าคุณสามารถสร้างบันทึกแบบเต็มด้วยการทดสอบเหล่านี้ได้โดยเพิ่ม -f ลงในคำสั่ง

วิธีที่ 5: เรียกใช้การสแกนด่วน

หากคุณเพียงต้องการเรียกใช้การสแกนอย่างรวดเร็วโดยไม่เกี่ยวข้องกับตัวเองด้วยการตรวจสอบเชิงลึกให้พิมพ์ sudo unhide quick ซึ่งควรทำงานได้เร็วที่สุดเท่าที่ชื่อแนะนำ เทคนิคนี้จะสแกนรายการ proc เช่นเดียวกับระบบไฟล์ proc นอกจากนี้ยังเรียกใช้การตรวจสอบที่เกี่ยวข้องกับการเปรียบเทียบข้อมูลที่รวบรวมจาก / bin / ps กับข้อมูลที่ได้รับจากการเรียกไปยังทรัพยากรระบบ สิ่งนี้ให้เอาต์พุตบรรทัดเดียว แต่น่าเสียดายที่เพิ่มความเสี่ยงของผลบวกปลอม การตรวจสอบอีกครั้งหลังจากตรวจสอบผลลัพธ์ก่อนหน้านี้แล้วจะมีประโยชน์

ผลลัพธ์มีดังนี้:

[*] การค้นหากระบวนการที่ซ่อนอยู่ผ่านการเปรียบเทียบผลลัพธ์ของการเรียกระบบ proc dir และ ps

คุณอาจเห็นกระบวนการชั่วคราวหลายอย่างเกิดขึ้นหลังจากเรียกใช้การสแกนนี้

วิธีที่ 6: เรียกใช้การสแกนย้อนกลับ

เทคนิคที่ยอดเยี่ยมในการดมกลิ่นรูทคิทนั้นเกี่ยวข้องกับการตรวจสอบเธรด ps ทั้งหมด หากคุณรันคำสั่ง ps ที่พรอมต์ CLI คุณจะเห็นรายการคำสั่งที่เรียกใช้จากเทอร์มินัล การสแกนย้อนกลับจะตรวจสอบว่าเธรดโปรเซสเซอร์แต่ละเธรดที่อิมเมจ ps มีการเรียกระบบที่ถูกต้องและสามารถค้นหาได้ในรายการ procfs นี่เป็นวิธีที่ดีเยี่ยมในการตรวจสอบว่ารูทคิทไม่ได้ฆ่าบางสิ่ง เพียงพิมพ์ sudo unhide reverse เพื่อรันการตรวจสอบนี้ มันควรจะทำงานได้เร็วมาก เมื่อทำงานโปรแกรมควรแจ้งให้คุณทราบว่ากำลังมองหากระบวนการปลอม

วิธีที่ 7: การเปรียบเทียบ / bin / ps กับ System Calls

สุดท้ายการตรวจสอบที่ครอบคลุมที่สุดเกี่ยวข้องกับการเปรียบเทียบข้อมูลทั้งหมดจากรายการ / bin / ps กับข้อมูลที่นำมาจากการเรียกระบบที่ถูกต้อง พิมพ์ sudo unhide sys เพื่อเริ่มการทดสอบนี้ กว่าจะวิ่งได้ใช้เวลานานกว่าคนอื่น ๆ เนื่องจากมีบรรทัดเอาต์พุตที่แตกต่างกันจำนวนมากคุณอาจต้องการใช้คำสั่ง -f log-to-file เพื่อให้สามารถย้อนกลับไปดูทุกสิ่งที่พบได้ง่ายขึ้น

อ่าน 4 นาที