ในขณะที่ฉันรอคอยที่จะพูดคุยในหัวข้อนี้ต่อไปให้ฉันเล่าประวัติทฤษฎีและการปฏิบัติเกี่ยวกับช่องโหว่ให้คุณฟัง ตอนนี้เราทุกคนเคยได้ยินมาแล้วว่าข้อบกพร่องด้านความปลอดภัยอาจมีค่าใช้จ่ายสูงเราทุกคนรู้ดีว่าเราต้องอัปเดตซอฟต์แวร์ให้ทันสมัยอยู่เสมอเราทุกคนรู้ดีว่าการอัปเดตจำนวนมากเกิดจากข้อบกพร่องด้านความปลอดภัย แต่วันนี้ฉันจะบอกคุณเล็กน้อยเกี่ยวกับวิธีที่พบข้อผิดพลาดเหล่านี้และใช้ประโยชน์ได้🙂 แต่ก่อนหน้านี้เราจะชี้แจงรายละเอียดเล็กน้อยเพื่อให้มีภาพรวมที่ดีขึ้น
ก่อนที่จะเริ่ม
ก่อนอื่นฉันอยากจะบอกคุณว่าเราจะมุ่งเน้นไปที่ช่องโหว่แรกที่ฉันเรียนรู้ที่จะใช้ประโยชน์จากที่รู้จัก บัฟเฟอร์ล้นในช่องโหว่นี้เราใช้ประโยชน์จากการขาดการตรวจสอบความจำเพื่อทำสิ่งสนุก ๆ 🙂 แต่เรามาชี้แจงเพิ่มเติมเกี่ยวกับเรื่องนี้อีกเล็กน้อย
นี่จะไม่เป็นสถานการณ์จริงในโลก
ฉันไม่สามารถสอนพวกเขาให้ทำลายโปรแกรมใด ๆ ที่พวกเขาดูได้ - อันดับแรกเพราะมันอันตรายสำหรับคอมพิวเตอร์ของพวกเขาอันดับที่สองเพราะจะต้องใช้โควต้าคำศัพท์มากกว่าปกติของฉัน
เราไปเที่ยวยุค 80
สิ่งที่ฉันจะแสดงให้คุณเห็นว่าฉันสามารถทำได้บนแล็ปท็อปของฉัน แต่ก็ไม่ได้หมายความว่าจะสามารถทำได้ในวันนี้ด้วยวิธีง่ายๆ concepts หลาย ๆ แนวคิดเหล่านี้ถูกใช้ประโยชน์ไปแล้วหลายครั้งจนมีการใช้วิธีการป้องกันแบบใหม่และวิธีการใหม่ ๆ ในการหลบเลี่ยง พวกเขาได้โผล่ออกมา😛 แต่นั่นทำให้เรากลับมาที่เดิมไม่มีช่องว่างที่จะบอกได้ทั้งหมด🙂
มันอาจไม่ทำงานบนโปรเซสเซอร์ของคุณ
แม้ว่าฉันจะใช้ตัวอย่างที่เรียบง่าย แต่ฉันต้องการให้ชัดเจนตั้งแต่แรกว่ารายละเอียดของสิ่งนี้มีมากมายและหลากหลายมากจนออกมาเหมือนกับฉันหากคุณต้องการลองดู อาจไม่ได้เอฟเฟกต์ที่ต้องการด้วย🙂 แต่คุณคงนึกออกว่าฉันไม่สามารถอธิบายได้ว่าในช่องว่างนี้โดยเฉพาะอย่างยิ่งเมื่อมีบทนำนี้ฉันได้ใช้คำมากกว่า 300 คำแล้วดังนั้นเราจึงตรงประเด็น
ไฟล์ บัฟเฟอร์ล้น
ก่อนอื่นเราต้องเข้าใจครึ่งแรกของชุดค่าผสมนี้ก่อน
บัฟเฟอร์
เนื่องจากทุกอย่างเกี่ยวกับหน่วยความจำในคอมพิวเตอร์จึงมีเหตุผลที่จะต้องมีที่เก็บข้อมูลบางประเภท เมื่อเราพูดถึง ปัจจัยการผลิต o เอาท์พุทเรามาโดยตรงกับแนวคิดของ บัฟเฟอร์. เพื่อให้สั้น a กันชน เป็นพื้นที่หน่วยความจำขนาดที่กำหนดไว้ซึ่งเราจะจัดเก็บข้อมูลจำนวนหนึ่งง่ายๆ🙂
โอเวอร์โฟลว์เกิดขึ้นตามชื่อเมื่อบัฟเฟอร์เต็มไปด้วยข้อมูลมากเกินกว่าที่จะเก็บได้ แต่ทำไมสิ่งนี้ถึงสำคัญ?
กอง
หรือที่เรียกว่า stacks เป็นประเภทข้อมูลนามธรรมที่เราสามารถทำได้ ซ้อนกัน ข้อมูลลักษณะสำคัญคือมีการสั่งซื้อ LIFO (เข้าก่อนออกครั้งสุดท้าย). ลองคิดดูเกี่ยวกับสแต็คของเพลตเราวางไว้ด้านบนทีละแผ่นจากนั้นเราก็นำออกมาทีละแผ่นจากด้านบนทำให้จานสุดท้ายที่เราใส่ (อันที่อยู่ด้านบนสุด ) เป็นจานแรกที่เราจะหยิบออกมาแน่นอนว่าถ้าเราหยิบออกมาได้ทีละจานเท่านั้นและเราตัดสินใจที่จะทำตามลำดับนั้น: P.
ตอนนี้คุณรู้ทั้งสองแนวคิดแล้วเราต้องจัดลำดับให้เป็นระเบียบ สแต็คมีความสำคัญเนื่องจากแต่ละโปรแกรมที่เราเรียกใช้มีของตัวเอง กองการดำเนินการ. แต่กองนี้มี ลักษณะเฉพาะ, เติบโตลง. สิ่งเดียวที่คุณต้องรู้เกี่ยวกับเรื่องนี้ก็คือในขณะที่โปรแกรมกำลังทำงานเมื่อมีการเรียกใช้ฟังก์ชันสแต็กจะเปลี่ยนจากตัวเลข X ในหน่วยความจำเป็นตัวเลข (Xn) แต่เพื่อที่จะดำเนินการต่อเราต้องเข้าใจอีกแนวคิดหนึ่ง
พอยน์เตอร์
นี่เป็นแนวคิดที่ผลักดันให้โปรแกรมเมอร์หลายคนคลั่งไคล้เมื่อพวกเขาเริ่มต้นในโลกของ C อันที่จริงพลังอันยิ่งใหญ่ของการเขียนโปรแกรม C เกิดจากการใช้พอยน์เตอร์ เพื่อให้เป็นเรื่องง่ายตัวชี้ ชี้ไปที่ที่อยู่หน่วยความจำ ฟังดูซับซ้อน แต่ก็ไม่ได้ซับซ้อนขนาดนั้นเราทุกคนมี RAM ในเครื่องใช่ไหม? นี่สามารถกำหนดเป็นไฟล์ การจัดเรียงบล็อกอย่างต่อเนื่องโดยปกติตำแหน่งเหล่านี้จะแสดงเป็นเลขฐานสิบหก (จาก 0 ถึง 9 และจาก A ถึง F เช่น 0x0, 0x1, 0x6, 0xA, 0xF, 0x10) นี่เป็นบันทึกที่น่าสงสัย 0x10 NO เท่ากับ 10 😛ถ้าเราแปลงเป็นเลขฐานสิบมันจะเหมือนกับการพูด 15 นี่เป็นสิ่งที่ทำให้สับสนมากกว่าหนึ่งอย่างในตอนแรก แต่ลองลงไปดูกัน
ประวัติ
โปรเซสเซอร์ทำงานร่วมกับ บันทึกซึ่งทำงานในการส่งตำแหน่งจากหน่วยความจำกายภาพไปยังโปรเซสเซอร์สำหรับสถาปัตยกรรมที่ใช้ 64 บิตจำนวนรีจิสเตอร์มีขนาดใหญ่และยากที่จะอธิบายที่นี่ แต่เพื่อให้ได้แนวคิดรีจิสเตอร์เป็นเหมือนพอยน์เตอร์ซึ่งบ่งบอกถึงสิ่งอื่น ๆ พื้นที่หน่วยความจำ (ตำแหน่ง)
ตอนนี้ปฏิบัติ
ฉันรู้ว่ามันมีข้อมูลมากมายที่ต้องประมวลผล แต่ในความเป็นจริงมันเป็นปัญหาที่ค่อนข้างซับซ้อนซึ่งฉันพยายามอธิบายแบบง่ายๆเราจะเห็นโปรแกรมเล็ก ๆ ที่ใช้บัฟเฟอร์และเรากำลังจะหยุด เพื่อทำความเข้าใจเรื่องนี้เกี่ยวกับการล้นเห็นได้ชัดว่าสิ่งนี้ไม่ใช่โปรแกรมจริงและเราจะ "หลบเลี่ยง" มาตรการตอบโต้หลายอย่างที่ใช้ในปัจจุบันเพียงเพื่อแสดงให้เห็นว่าสิ่งต่างๆได้ทำมาก่อนอย่างไร🙂และเนื่องจากหลักการบางอย่างเหล่านี้ จำเป็นเพื่อให้สามารถเรียนรู้สิ่งที่ซับซ้อนมากขึ้น😉
GDB
โปรแกรมที่ยอดเยี่ยมที่โปรแกรมเมอร์ C ใช้มากที่สุดอย่างไม่ต้องสงสัยในบรรดาข้อดีมากมายเรามีข้อเท็จจริงที่ว่ามันช่วยให้เราเห็นสิ่งที่เราพูดถึงทั้งหมดนี้ลงทะเบียนสแต็กบัฟเฟอร์ ฯลฯ 🙂 มาดูโปรแกรมที่เราจะใช้สำหรับตัวอย่างของเรา
retinput.c
นี่เป็นโปรแกรมที่ค่อนข้างง่ายเราจะใช้ไลบรารี stdio.h
เพื่อให้สามารถรับข้อมูลและแสดงในเทอร์มินัล เราสามารถเห็นฟังก์ชันที่เรียกว่า return_input
ซึ่งสร้างไฟล์ กันชน ที่เรียกว่า แถวซึ่งมีความยาว 30 ไบต์ (ชนิดข้อมูลถ่านยาว 1 ไบต์)
ฟังก์ชั่น gets(array);
ขอข้อมูลโดยคอนโซลและฟังก์ชัน printf()
ส่งคืนเนื้อหาของอาร์เรย์และแสดงบนหน้าจอ
ทุกโปรแกรมที่เขียนด้วย C เริ่มต้นด้วยฟังก์ชัน main()
สิ่งนี้จะรับผิดชอบในการเรียก return_input เท่านั้นตอนนี้เรากำลังรวบรวมโปรแกรม
ลองมาดูสิ่งที่ฉันเพิ่งทำไป ทางเลือก -ggdb
บอก gcc ให้คอมไพล์โปรแกรมด้วยข้อมูลเพื่อให้ gdb สามารถดีบักได้อย่างถูกต้อง -fno-stack-protector
เป็นตัวเลือกที่เห็นได้ชัดว่าเราไม่ควรใช้ แต่เรากำลังจะใช้เพราะมิฉะนั้นจะสามารถสร้างบัฟเฟอร์ล้นในสแตกได้ ในที่สุดฉันก็ได้ทดสอบผลลัพธ์แล้ว ./a.out
มันแค่เรียกใช้สิ่งที่ฉันเพิ่งรวบรวมมันขอข้อมูลจากฉันและส่งคืน วิ่ง🙂
คำเตือน
หมายเหตุอื่นที่นี่ คุณสามารถดูคำเตือน? เห็นได้ชัดว่าเป็นสิ่งที่ต้องคำนึงถึงเมื่อเราทำงานกับโค้ดหรือคอมไพล์ซึ่งเป็นสิ่งที่ชัดเจนและมีไม่กี่โปรแกรมที่มีฟังก์ชัน gets()
ในรหัส ข้อดีอย่างหนึ่งของ Gentoo คือการรวบรวมแต่ละโปรแกรมฉันสามารถเห็นสิ่งที่อาจผิดพลาดโปรแกรม "ในอุดมคติ" ไม่ควรมี แต่คุณจะแปลกใจว่ามีโปรแกรมขนาดใหญ่กี่โปรแกรมที่มีคำเตือนเหล่านี้เพราะมันใหญ่มากและมัน ยากที่จะติดตามฟังก์ชั่นที่เป็นอันตรายเมื่อมีคำเตือนหลายอย่างในเวลาเดียวกัน ทีนี้ถ้าเราทำต่อ
การดีบักโปรแกรม
ตอนนี้ส่วนนี้อาจจะสับสนเล็กน้อย แต่เนื่องจากฉันเขียนไปแล้วค่อนข้างน้อยฉันจึงไม่สามารถอธิบายทุกอย่างได้ดังนั้นขออภัยหากคุณเห็นว่าฉันไปเร็วเกินไป🙂
กำลังปลดรหัส
เริ่มต้นด้วยการดูโปรแกรมภาษาเครื่องที่คอมไพล์ของเรา
นี่คือรหัสของฟังก์ชันหลักของเราใน การชุมนุมนี่คือสิ่งที่โปรเซสเซอร์ของเราเข้าใจบรรทัดทางด้านซ้ายคือที่อยู่ทางกายภาพในหน่วยความจำไฟล์ <+ n> มันเป็นที่รู้จักกันในชื่อ ชดเชยโดยทั่วไปแล้วระยะห่างจากจุดเริ่มต้นของฟังก์ชัน (หลัก) ถึงคำสั่งนั้น (เรียกว่า opcode). จากนั้นเราจะเห็นประเภทของคำสั่ง (push / mov / callq …) และการลงทะเบียนอย่างน้อยหนึ่งรายการ สรุปได้ว่าเป็นการบ่งชี้ตามด้วยต้นทาง / ต้นทางและปลายทาง <return_input>
หมายถึงฟังก์ชันที่สองของเราลองมาดูกัน
return_input
มันซับซ้อนกว่านี้เล็กน้อย แต่ฉันแค่อยากให้คุณตรวจสอบสองสามอย่างมีแท็กที่เรียกว่า <gets@plt>
และหนึ่งรหัสสุดท้ายที่เรียกว่า retq
ระบุจุดสิ้นสุดของฟังก์ชัน เราจะใส่เบรกพอยต์สองสามจุดหนึ่งในฟังก์ชัน gets
และอีกรายการหนึ่งใน retq
.
วิ่ง
ตอนนี้เราจะเรียกใช้โปรแกรมเพื่อดูว่าการดำเนินการเริ่มต้นอย่างไร
เราจะเห็นว่าลูกศรเล็ก ๆ ปรากฏขึ้นเพื่อระบุว่าเราอยู่ที่ไหนฉันต้องการให้พวกเขาคำนึงถึงทิศทาง 0x000055555555469b
นี่คือที่อยู่หลังจากโทรไป return_input
ในฟังก์ชัน main
นี่เป็นสิ่งสำคัญเนื่องจากเป็นจุดที่โปรแกรมควรส่งคืนเมื่อคุณเสร็จสิ้นการรับไฟล์ อินพุตมาเข้าสู่ฟังก์ชั่นกัน ตอนนี้เรากำลังจะตรวจสอบหน่วยความจำก่อนเข้าสู่ฟังก์ชั่น gets
.
ฉันได้ใส่ฟังก์ชันหลักกลับมาให้คุณแล้วและฉันได้เน้นรหัสที่ฉันอ้างถึงอย่างที่คุณเห็นเนื่องจาก ความอดทน ได้แยกออกเป็นสองส่วนฉันต้องการให้พวกเขาคำนึงถึงทิศทาง 0x7fffffffdbf0
(อันแรกจากด้านซ้ายหลังคอมมานโด x/20x $rsp
) เนื่องจากนี่คือตำแหน่งที่เราต้องใช้เพื่อตรวจสอบผลลัพธ์ของการได้รับมาดำเนินการต่อ:
ทำลายโปรแกรม
ฉันได้เน้นเหล่านั้น 0x44444444
เนื่องจากเป็นตัวแทนของ Ds ของเราตอนนี้เราได้เริ่มเพิ่มแล้ว อินพุต ไปยังโปรแกรมและอย่างที่คุณเห็นเราอยู่ห่างจากที่อยู่ที่ต้องการเพียงสองบรรทัดเราจะกรอกข้อมูลจนกว่าเราจะอยู่ก่อนที่อยู่ที่เราเน้นในขั้นตอนก่อนหน้า
การเปลี่ยนเส้นทางกลับ
ตอนนี้เราได้จัดการเพื่อป้อนส่วนนี้ของรหัสที่ระบุการกลับมาของฟังก์ชันแล้วมาดูกันว่าจะเกิดอะไรขึ้นถ้าเราเปลี่ยนที่อยู่🙂แทนที่จะไปที่ตำแหน่งของ opcode ที่ตามหลังที่เรามีเมื่อสักครู่ คุณคิดอย่างไรถ้าเรากลับไป return_input
เหรอ? แต่สำหรับสิ่งนี้จำเป็นต้องเขียนที่อยู่ที่เราต้องการเป็นไบนารีเราจะทำมันด้วยฟังก์ชัน printf
จากการทุบตี🙂
ตอนนี้เราได้รับข้อมูลสองครั้ง😀แน่นอนว่าโปรแกรมไม่ได้สร้างขึ้นมาเพื่อสิ่งนั้น แต่เราได้จัดการเพื่อทำลายรหัสและทำให้มันซ้ำในสิ่งที่ไม่ควรทำ
ปฏิกิริยาตอบสนอง
การเปลี่ยนแปลงง่ายๆนี้ถือได้ว่าเป็นไฟล์ เอาเปรียบ ธรรมดามาก🙂เขาสามารถทำลายโปรแกรมและทำบางสิ่งที่เราต้องการให้เขาทำ
นี่เป็นเพียงขั้นตอนแรกในรายการสิ่งที่ต้องดูและเพิ่มที่แทบไม่มีที่สิ้นสุดมีหลายวิธีในการเพิ่มสิ่งต่างๆมากกว่าการสั่งซื้อซ้ำ แต่คราวนี้ฉันได้เขียนหลายอย่างและทุกอย่างที่เกี่ยวข้องกับ เชลล์โค้ด เป็นเรื่องที่ต้องเขียนมากกว่าบทความหนังสือทั้งเล่มที่ฉันอยากจะบอก ขออภัยหากฉันไม่สามารถเจาะลึกหัวข้อที่ฉันชอบได้อีกเล็กน้อย แต่จะมีโอกาสแน่นอน🙂ทักทายและขอบคุณที่มาที่นี่
ตรงไปตรงมามากขึ้น เขียนน้อยลงและให้ความสำคัญกับสิ่งที่สำคัญ
สวัสดีขอบคุณสำหรับความคิดเห็น
เพื่อบอกความจริงฉันได้ตัดความคิดส่วนหนึ่งที่ดีออกไป แต่ถึงอย่างนั้นฉันก็ดูเหมือนว่ามันจะเหลือน้อยที่สุดเพื่อให้คนที่ไม่มีความรู้ด้านการเขียนโปรแกรมได้รับความคิด
ความนับถือ
ปัญหาคือผู้ที่ไม่มีความรู้ด้านการเขียนโปรแกรมจะไม่ทราบว่ามีอะไรบ้างเพราะมันซับซ้อนเกินไปที่จะเริ่มต้น แต่ผู้ที่รู้วิธีการเขียนโปรแกรมจะชื่นชมว่าเป็นคนตรงกว่า
ฉันคิดว่าคุณไม่สามารถเข้าถึงทุกคนได้คุณต้องเลือกและในกรณีนี้คุณได้ทำบาปที่ต้องการปกปิดมาก
อย่างไรก็ตามฉันบอกคุณว่าเป็นการวิจารณ์ที่สร้างสรรค์ฉันชอบหัวข้อเหล่านี้และฉันอยากให้คุณเขียนบทความต่อไปขอแสดงความยินดี!
ฉันคิดว่าสิ่งเดียวกัน
ขอบคุณมากทั้งคู่ !! เป็นเรื่องยากที่จะเข้าใจว่าจะเข้าถึงกลุ่มเป้าหมายได้อย่างไรเมื่อความจริงก็คือจำนวนคนที่มีระดับการเขียนโปรแกรมขั้นสูงที่อ่านบทความเหล่านี้มีน้อย (อย่างน้อยก็สามารถอนุมานได้จากความคิดเห็น)
ฉันได้ทำบาปอย่างแน่นอนที่ต้องการทำให้บางสิ่งบางอย่างง่ายขึ้นซึ่งต้องใช้ฐานความรู้ที่กว้างขวางเพื่อให้เข้าใจ ฉันหวังว่าคุณจะเข้าใจตั้งแต่ฉันเพิ่งเริ่มเขียนบล็อกฉันยังไม่ได้ค้นพบจุดที่แน่นอนที่ผู้อ่านของฉันรู้และเข้าใจในสิ่งที่ฉันพูด นั่นจะทำให้การบอกความจริงง่ายขึ้นมาก🙂
ฉันจะพยายามทำให้สั้นลงเมื่อมันเข้ากันได้ดีโดยไม่ปรับรูปแบบเนื่องจากการแยกวิธีการเขียนออกจากเนื้อหานั้นซับซ้อนกว่าที่คิดไว้เล็กน้อยอย่างน้อยฉันก็มีการเชื่อมโยงกันมาก แต่ฉันคิดว่าในที่สุดฉันก็จะสามารถ เพื่อเพิ่มเส้นแทนการตัดเนื้อหา
ความนับถือ
คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ที่ไหน มีหนังสือแนะนำไหม
ตัวอย่างนี้นำมาจาก The Shellcoder's Handbook โดย Chris Anley, John Heasman, Felix Linder และ Gerardo Richarte แต่ในการแปล 64 บิตฉันต้องเรียนรู้เกี่ยวกับสถาปัตยกรรมของฉันคู่มือสำหรับนักพัฒนา intel เล่ม 2 และ 3 เป็น แหล่งที่มาที่น่าเชื่อถือสำหรับสิ่งนั้น นอกจากนี้ยังเป็นการดีที่จะอ่านเอกสาร GDB ซึ่งมาพร้อมกับคำสั่ง 'info gdb' หากต้องการเรียนรู้ Assembly และ C มีหนังสือที่ดีมากมายยกเว้นว่าหนังสือ Assembly นั้นเก่าไปหน่อยดังนั้นจึงมีช่องว่างให้เติมอีก พิมพ์เอกสาร
ในปัจจุบันเชลล์โค้ดนั้นไม่มีประสิทธิภาพอีกต่อไปด้วยเหตุผลหลายประการ แต่ก็ยังน่าสนใจที่จะเรียนรู้เทคนิคใหม่ ๆ
หวังว่าจะช่วยได้บ้าง🙂ทักทาย
บทความดีๆบล็อกเก่า desdelinux ได้เกิดใหม่อีกครั้ง =)
เมื่อคุณบอกว่ารีโมตเชลล์ไม่มีประสิทธิภาพคุณหมายถึงมาตรการตอบโต้ที่ออกแบบมาเพื่อลดการโจมตีพวกเขาเรียกว่าการรักษาความปลอดภัยที่น่ารังเกียจ
ทักทายมาเรื่อย ๆ
ขอบคุณมาก Franz 🙂คำพูดที่ดีมากจริงๆแล้วฉันหมายความว่า Shellcoding ในวันนี้ซับซ้อนกว่าที่เราเห็นที่นี่มาก เรามี ASLR (ตัวสร้างตำแหน่งหน่วยความจำแบบสุ่ม) ตัวป้องกันสแต็กมาตรการต่างๆและมาตรการตอบโต้ที่ จำกัด จำนวน opcodes ที่สามารถฉีดเข้าไปในโปรแกรมและเป็นเพียงจุดเริ่มต้น
ขอแสดงความนับถือ
สวัสดีคุณจะทำส่วนอื่นเพื่อขยายหัวข้อหรือไม่? มันน่าสนใจ
สวัสดีหัวข้อนี้ค่อนข้างน่าสนใจ แต่ระดับของความซับซ้อนที่เราจะดำเนินการจะสูงมากอาจเกี่ยวข้องกับโพสต์จำนวนมากเพื่ออธิบายข้อกำหนดเบื้องต้นต่างๆเพื่อทำความเข้าใจกับหัวข้ออื่น ๆ ฉันอาจจะเขียนเกี่ยวกับเรื่องนี้ แต่จะไม่ใช่โพสต์ต่อไปนี้ฉันต้องการเขียนหัวข้อสองสามหัวข้อก่อนที่จะดำเนินการต่อในหัวข้อนี้
สวัสดีและขอบคุณสำหรับการแบ่งปัน
เจ๊ดีมาก! คุณมีส่วนร่วมในโพสต์ที่ยอดเยี่ยม! คำถามหนึ่งคือฉันเริ่มต้นการรักษาความปลอดภัยด้านไอทีโดยอ่านหนังสือชื่อ "Assuring security by pen testing" หนังสือเล่มนี้แนะนำไหม คุณจะแนะนำให้ฉันเริ่มสอบถามเกี่ยวกับปัญหาเหล่านี้ได้อย่างไร
สวัสดีแคคตัสมันเป็นจักรวาลทั้งหมดเกี่ยวกับช่องโหว่และอื่น ๆ การบอกความจริงมันขึ้นอยู่กับสิ่งที่ดึงดูดความสนใจของคุณและความต้องการที่คุณมีผู้จัดการไอทีไม่จำเป็นต้องรู้เช่นเดียวกับผู้ทดสอบปากกา หรือนักวิจัยช่องโหว่หรือนักวิเคราะห์ทางนิติวิทยาศาสตร์ทีมกู้คืนระบบมีชุดทักษะที่แตกต่างกันมาก เห็นได้ชัดว่าแต่ละคนต้องการความรู้ทางเทคนิคในระดับที่แตกต่างกันฉันขอแนะนำให้คุณเริ่มค้นพบสิ่งที่คุณชอบและเริ่มกินหนังสือบทความและอื่น ๆ และที่สำคัญที่สุดคือฝึกฝนทุกสิ่งที่คุณอ่านแม้ว่ามันจะล้าสมัยก็ตาม ที่จะสร้างความแตกต่างในที่สุด
ขอแสดงความนับถือ
เฮ้
ขอบคุณมากสำหรับการอธิบายหัวข้อนี้นอกเหนือจากการแสดงความคิดเห็นว่าสำหรับข้อมูลเพิ่มเติมเรามี "คู่มือของเชลล์โคเดอร์" ฉันมีรอการอ่าน😉อยู่แล้ว