เมื่อมัลแวร์ชิ้นหนึ่งได้รับสิทธิ์เข้าถึงบัญชีของผู้ใช้แล้วมันสามารถ:
1.สร้าง bash alias (ในเชลล์ปัจจุบันและใน~/.bashrc
) ไปยังคำสั่งที่จะทำการ[sudo] password for $USER:
พรอมต์และขโมยรหัสผ่านของผู้ใช้
alias sudo='echo -n "[sudo] password for $USER: " && \
read -r password && \
echo "$password" >/tmp/sudo-password'
2.ในทำนองเดียวกันมันสามารถวางไฟล์ปฏิบัติการที่มีชื่อsudo
ไว้~/.bin
และปรับเปลี่ยนPATH
ตัวแปรเพื่อให้ได้เอฟเฟกต์เดียวกัน:PATH="$HOME/.bin:$PATH"
3.จับการกดปุ่มผ่านเซิร์ฟเวอร์ X ดูคำsudo
แล้วลองข้อความระหว่างการEnterกดปุ่มสองครั้งถัดไปเป็นรหัสผ่าน
4.สิ่งที่คล้ายกันสามารถทำได้ในสภาพแวดล้อมใด ๆ (คอนโซลWayland , X) $LD_PRELOAD
ใช้เช่น
5.หากมัลแวร์ติดไวรัสเชลล์ที่ใช้sudo
และsudo
แคชข้อมูลรับรองมัลแวร์สามารถตรวจสอบอย่างต่อเนื่องว่าเป็นไปได้หรือsudo
ไม่ที่จะไม่มีรหัสผ่าน:
while : ; do
echo | sudo -S echo "test" &>/dev/null && break
sleep 10
done
sudo echo "We now have root access"
การป้องกัน:
ที่ 1 และ 2\/bin/sudo
ใช้ \
ละเว้นชื่อแทนและละเว้น/bin/…
$PATH
หรือเพิ่มชื่อแทนเช่น: ssudo="\/bin/sudo"
และใช้ssudo
แทนsudo
เสมอ ดูเหมือนว่าไม่น่าเป็นไปได้ที่ไวรัสจะฉลาดพอที่จะแมปชื่อแทนนี้ได้
3.หลีกเลี่ยงการพิมพ์รหัสผ่านของคุณเมื่อใช้ X11 ใช้คอนโซลเสมือนหรือเวสตันแทน
5.ชุดในtimestamp_timeout=0
/etc/sudoers
วิธีเดียวที่จะขจัดโอกาสที่sudo
รหัสผ่านจะถูกดมกลิ่นได้อย่างสมบูรณ์ดูเหมือนจะหลีกเลี่ยงได้ทั้งหมด ให้ล็อกอินเป็นรูทไปยังคอนโซลเสมือนแทน
อ้างอิงจาก Alexander Peslyak : "การใช้งานที่ปลอดภัยเพียงอย่างเดียวสำหรับ su [และ sudo] คือการเปลี่ยนจากบัญชีที่มีสิทธิพิเศษมากกว่ามาเป็นบัญชีที่มีสิทธิ์น้อยกว่า ... "
ในบันทึกด้านข้าง sudo มีวิธีการรับมือบางอย่าง:
sudo
อ่านจากtty
แทนstdin
ดังนั้นalias sudo='tee -a /tmp/sudo-password | sudo'
จะหยุดพักsudo
(แต่จะจับรหัสผ่าน)