본문 바로가기
모의해킹/시스템해킹

리버스쉘(Reverse) 바인드쉘(Bind) 커맨드쉘(Command) Shell 획득 넷캣(NetCat) 사용법

by 보안의신 2023. 5. 12.
반응형

 

리버스쉘

 

 

바인드쉘, 리버스쉘

 

모의해킹을 진행 할 때 접속을 시도하는 방향에 따라
리버스쉘과 바인드쉘로 나뉜다.

바인드쉘은 우리가 흔히 알고 있는 방식으로,
서버에서 리스닝을 하고 있으면 클라이언트에서 접속하는 형태이다.

구글사이트에 우리가 접속하는 구조(바인드쉘)

 

이와 반대로 리버스쉘은
클라이언트(해커)가 리스닝을 하고
서버에서 클라이언트(해커)쪽으로 접속하는 형태이다.

구글사이트가 사용자한테 접속하는 구조(리버스쉘)

 


해킹 시 리버스쉘을 사용하는 이유는
주로 방화벽때문이다.

 

 

우리가 사는 집의 도어락을 예시로 보자 
가족을 제외하고 도어락의 비밀번호를 모르기 때문에
밖에서 집안으로 들어오기란 쉽지 않다.


하지만 집안에서 밖으로 나가는건

도어락 버튼 하나로 쉽게 나갈 수 있다.



마찬가지로 실무에서도
외부에서 들어오는 인가되지 않은 요청은 모두 차단이 되고,

내부에서 외부로 나가는건 모두 허용되는 것이 일반적이다.

 

이렇기에 리버스쉘을 통한 서버침투가 가능해진다.


쉘 생성 (netcat)

 

바인드쉘과 리버스쉘을 생성하는 방법은 여러가지가 있다.
bash, perl, python, php, ruby, netcat, java 등...

 

netcat(nc)을 사용해 쉘을 생성해볼 것이다.

 

쉘

nc -h

명령어로 옵션 및 사용법에 대해 알 수 있다.

 

쉘

nc -lvp 1234

> 서버에서 포트 1234 리스닝

 

옵션
-l listen mode, for inbound connects
-v verbose [use twice to be more verbose
-p local port number

 

클라이언트에서 서버로의 요청 (바인드쉘 과정)

 

쉘

서버에서 연결되었음을 알 수 있다.

 

 

쉘

연결 후 서버와 클라이언트간에 메시지 전송이 가능하다.

 

 

메시지뿐만 아니라 파일 송수신도 가능하다.

 

 

쉘

 

클라이언트에서 1234 포트로 /etc/shadow 파일을 전송

 

옵션
-q quit after EOF on stdin and delay of secs
-q 0(secs) 파일 전송이 완료되면 세션을 바로 종료

 

shadow파일이 전송된것을 확인

 

 

바인드쉘을 통한 커맨드쉘 획득

쉘


서버에서 1234포트를 리스닝
세션이 맺어지면 /bin/sh 실행

-e program to exec after connect [dangerous!!]

쉘

클라이언트가 서버 1234로 접속 시
명령어 사용이 가능한 쉘 획득

 

 

리버스쉘을 통한 커맨드쉘 획득

쉘

클라이언트에서 1234포트를 리스닝

 

쉘

서버에서 클라이언트 1234포트로 접속 시도
세션 생성 후 /bin/sh 실행

 

쉘

클라이언트에서 명령어 사용이 가능한 쉘 획득

반응형

댓글