일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 킹덤 고근희
- 조희연
- 뭉쳐야 찬다
- 임영규
- libtins
- 홍혜걸
- 성남 코로나 확진자
- 학교 개학 연기 4월
- 이상형 만들기
- 고민정
- 이태원 클라쓰 15회 예고
- 해킹
- 픽크루
- 유튜버 김재석
- 리리남매
- 김영권
- 미국 금리인하
- 김재석
- 폰폰테스트
- 스콜피온킹
- 불가피
- 이지혜
- 금리인하
- 양적완화
- 김영권 아내
- 최강욱
- 은혜의 강 교회
- 제넥신
- 스페인 코로나
- 성남은혜의강교회
- Today
- Total
Dork's port
FTZ Level4 Write-up(FTZ Level4 풀이) 본문
안녕하세요!
Level4입니다.
두번째이지만 역시나 애를 많이 먹었던 레벨인 것 같아요!
그럼 죽여봅시다!
힌트를 보면 누군가 백도어를 심어놓았다고 하는군요!
Backdoor란?
직역하면 뒷문 이라는 뜻으로 크래커가 계정 탈취에 성공 한 후 다음에 접속할 것을 대비해 쉽게 접근할 수 있도록 만들어 두는 파일을 의미 합니다!
감사합니다.. ㅠ
그래서 해당 폴더로 가서 내용을 보도록 하겠습니다.
$ cd /etc/xinetd.d
이름이 저래도 되는건가요..?
누가봐도 수상한 backdoor라는 이름의 파일이 있군요!
실행을 시켜보려 했으나 실행이 되지 않는 파일입니다.
그래서 안의 내용을 보도록 하겠습니다!
내용을 보면 service finger라는 이름으로 C의 함수처럼 생겼군요? 뭔진 잘 모르지만 안의 내용으로 대충 유추해보자면 user의 권한으로 server의 파일을 동작 시킨다고 생각할 수 있겠군요!
그런데 보다보니 찝찝한것이 있네요. finger라는 이름의 서비스(파일)이 이미 있는것 같네요?
그래서 파일의 내용을 한번 보았습니다.
다행히도 동작하지 않는 것 같네요! 안심하고 넘어갑시다!(disable = yes)
그럼 우선 명령어를 실행시켜 보도록 하겠습니다.
현재 접속한 계정의 정보가 출력되는 명령어라는걸 유추할 수 있습니다!
허허 그러면 다음으로 위의 서버에 파일을 작성해보도록 하겠습니다!(이때 tmp폴더에 작성을 하지 않았는데 어떻게 finger의 명령어가 동작하는지 의심해야 했었습니다....ㅠ)
저는 쉘 스크립트를 작성하도록 하였습니다.
#!/bin/bash 를 이용해 my-pass의 명령어를 실행한다는 간단한 쉘 스크립트 입니다!
처음엔 #!/bin/bash와 같이 인터프리터를 지정해 주지 않았는데 실행이 되지 않더라구요!
그래서 해커스쿨에 여쭤보니 친절히 답변해 주셨습니다.
그리고 실행이 가능하도록 실행권한을 주도록 합시다!
그리고 아래의 명령어로 finger를 실행시켜주면 짜잔~ 패스워드가 나타났군요?
$ finger @localhost
다음 레벨에서 뵙기전에...
조금더 알아보도록 합시다!
저는 처음에 아래와 같이 시도를 한 후 패스워드가 나타나지 않아 삽질을 많이 했습니다.
분명 backdoor파일을 생성한 후 finger명령어를 실행시켜도 예전과 같은 화면만 내뿜는게 아니겠어요?
그래서 내가 실행시키는 finger는 어디서 오는 명령어인지 보기 위해 아래의 명령어로 설정되어있는 환경변수를 출력해 보았습니다.
하나씩 보던 중 /usr/bin의 폴더에 마찬가지로 finger라는 명령어가 있네요..?
그리고 해당 폴더에 있는 finger를 실행해보니 예전에 실행했던 finger가 출력되는 것을보고 제가 명령창에서 실행시킨 finger명령어는 해당 폴더에 있는 finger명령어 라는 것을 알 수 있었습니다.
그리고 한가지 힌트 더! xinetd.d는 수퍼데몬에 관련된 폴더로 데몬이란 인터넷에서 접근했을때 서비스를 처리해주는 서버? 와 비슷한 프로그램이라고 보시면 됩니다.
그리고 finger의 명령어는 로컬환경뿐만 아니라 원격지에 있는 환경의 유저도 볼 수 있는 명령어 인 것이구요.
그것을 조합해보면 finger라는 명령어를 단순히 실행시키는 것이 아니라 인터넷을 통해 나에게 접속을 해야 backdoor에 설정된 설정대로 동작한다!
라고 유추할 수 있겠네요! 즉, 좀더 간단히 정리를 해보자면,
1. 내가 명령창에서 친 finger명령어는 /etc/xinetd.d의 backdoor의 설정대로 동작한 명령어가 아니다(/usr/bin/에 있는 명령어를 단순히 실행한 결과)
2. xinetd.d의 특성상 즉, 슈퍼데몬의 특성상 인터넷으로의 접근이 오면 backdoor에서의 설정한 finger의 명령어가 동작한다.
3. finger명령어를 통해 인터넷으로(데몬을 이용할 수 있도록) 명령어를 작성하면 backdoor에서 설정한 finger의 명령어가 동작한다.
4. /usr/bin/finger를 이용해 나에게 원격접속(@localhost)하여 finger명령어(/etc/xinetd.d/backdoor에서 설정한 finger 즉, /home/level4/tmp/backdoor 파일)를 동작시킨다.
좀 어렵나요?
저도 처음에 어려웠습니다 ㅠㅠ
헷갈리시면 질문해주세요!
그럼 다음 레벨로 귀귀씽!
'Hackerschool FTZ Write-up' 카테고리의 다른 글
FTZ Level6 Write-up(FTZ Level6 풀이) (0) | 2018.03.22 |
---|---|
FTZ Level5 Write-up(FTZ Level5 풀이) (0) | 2018.03.22 |
FTZ Level3 Write-up(FTZ Level3 풀이) (0) | 2018.03.22 |
FTZ Level2 Write-up(FTZ Level2 풀이) (0) | 2018.03.22 |
SetUID를 포함한 Shellcode(쉘코드) 작성하기 (0) | 2018.01.18 |