나는 현재 사용자가 SSH를 통해 성공적으로 로그인하면 모든 사용자 입력을 기록하는 허니팟을 만들고 있습니다.
작동 방식은 다음과 같습니다. 허니팟 사용자 admin
의 기본 셸을 bash 스크립트로 설정했습니다.
admin:x:1001:1001::/home/admin:/home/admin/HoneyPot/spawner.sh
스크립트 spawner.sh
는 계속해서 except
스크립트를 시작하고 로깅 출력을 사용합니다 script
.
#!/bin/bash
cd /home/admin/HoneyPot/template/
pwd
script -c "./script.exp" -t 2> timing.log -a output.session #start recording session, execute except script
echo "we should not get here"
처음 몇 줄은 다음과 같습니다 script.exp
.
#!/usr/bin/expect -f
#
# This Expect script was generated by autoexpect on Mon Oct 5 13:55:35
# boilerplate comments and code:
set force_conservative 0 ;# set to 1 to force conservative mode even if
;# script wasn't run conservatively originally
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}
# start of my code
set timeout -1
spawn emulator #emulator is a simh emulator executable. not a shell script.
...
interact
./template.sh
admin
as using 을 사용하여 스크립트를 실행 하면 bash
스크립트가 정상적으로 실행됩니다. 그러나 login 을 사용하면 su
다음과 같은 일이 발생합니다.
austin@ubuntu:~$ su admin
Password:
/home/admin/HoneyPot/template
Script started, file is output.session
/home/admin/HoneyPot/template
Script started, file is output.session
/home/admin/HoneyPot/template
Script started, file is output.session
/home/admin/HoneyPot/template
Script started, file is output.session
/home/admin/HoneyPot/template
Script started, file is output.session
/home/admin/HoneyPot/template
...
내 bash 스크립트가 설정된 사용자 셸에서 작동하지 않는 이유는 무엇입니까? 내 스크립트에는 재귀 호출이 없으며 script
명령이 차단되어야 합니다!
누군가 우려하는 경우를 대비해 이 컴퓨터에서 나가는 네트워크 연결이 없습니다. SSH 연결만 허용할 수 있습니다. 예, 사용자가 이 문제를 해결할 수 있다는 것을 알고 있습니다. 이는 가상 머신에서 실행됩니다.
답변1
나는 당신이 shebang없이 스크립트를 사용하고 있다고 생각합니다.
바라보다이 답변:
execl() 함수가 POSIX.1-2008 시스템 인터페이스 볼륨에 정의된 [ENOEXEC]와 동일한 오류로 인해 실패하는 경우, 쉘은 검색 결과의 경로 이름을 첫 번째 피연산자로 사용하여 쉘을 호출하는 것과 동일한 명령을 실행해야 합니다. 나머지 인수는 새 셸로 전달되지만 새 셸의 "$0" 값을 명령 이름으로 설정할 수 있습니다. 실행 파일이 텍스트 파일이 아닌 경우 쉘은 이 명령 실행을 우회할 수 있습니다. 이 경우 오류 메시지를 작성하고 종료 상태 126을 반환해야 합니다.
spawner.sh
추가 사항 에 대한 echo "$@"
추가 정보를 얻으십시오 .
좋아요, 대답은 더 복잡하지만 이것이 도움이 될 것입니다. spawner.sh
상단 에 다음을 추가하세요.
if [[ $1 == -c ]]; then
exec bash "$@"
fi