수업/pwnable

[기말] 원격 접속

핏디 2021. 6. 7. 17:17
SMALL

Secure Shell (SSH)

> 원격에서 쉘 접속 가능

> remote 로그인하는 표준에 가까움

> 내용은 모두 암호화되어 있음

 

vSecure shell is a de facto standard for remote logins and encrypted file transfers.’ [SSH communications inc.]

v Founded in 1995 by Tatu Ylonen, a researcher at Helsinki University of Technology, Finland

v It provides authentication and encryption for business critical applications to work securely over the internet.

v Originally introduced for UNIX terminals as a replacement for the insecure remote access “Berkeley services" , viz. rsh, rlogin, rcp, telnet, etc.

v It can also be used for port forwarding of arbitrary TCP/IP or X11 connections (interactive terminals)

v It is a layer over TCP/IP and runs on the port 22.

디폴트 포트번호로 TCP 22을 사용 (외우기)

-주요 포트번호들: 80(http), 22(tcp), 3306(my sql), 443, …

 


SSH 접속해보기

다음 명령으로 ssh 접속

- ssh guest@210.125.93.57 –p1404

- IP주소 210.125.93.57 인 서버의 TCP 1404 포트로 ssh 접속을 시도함.

- 계정이름 guest (guest@ 부분)

- 암호: guest2021 (서버 관리자가 사전에 계정을 생성해 놓음)


NC

v Netcat?

Standard I/O (printf/scanf) 의 입출력을 TCP 네트워크 송수신으로 변경

- 사용법: nc [서버IP주소] [TCP포트번호]

) nc 127.0.0.1 5000

 

> nc를 통해 데이터를 주고 받을 수 있음

- 직접 입력을 줄 수도 있고, 프로그램 자체를 주거나, 바이너리를 주고 받을 수도 있음


SSH vs Netcat


NC 사용실습

v1단계: 2개의 터미널창 준비

CTRL+SHIFT+T 버튼을 누르면 터미널창 탭이 하나 더 생겨남

-아래처럼 2개의 터미널 탭을 만들것.

-CTRL + 페이지다운/페이지업 을 통해 전환가능

-마우스로 탭을 눌러서도 전환가능

 

v2단계: 1번 터미널에서 Netcat 으로 TCP 서버 실행

nc –l –p 6666

-엔씨 다시 엘 다시 피 육육육육

-TCP 6666 번 포트를 열고 현재 컴퓨터의 IP 주소에서 데이터 대기

1번 터미널에서 아래와 같은 상태 (대기상태) 가 되도록 함.

> 포트 번호는 어떤 것도 상관 없음

v3단계: 2번 터미널에서 Netcat 으로 TCP 서버에 접속

nc 127.0.0.1 6666

-127.0.0.1 아이피주소는 자기자신을 의미함 (현재 내가 사용하는 컴퓨터)

 

2번 터미널에서 아래와같이 입력후 hello 등 아무거나 타입후 엔터.

-1터미널쪽에서 메시지를 확인할수있음.

-1번에서 2번으로 메시지를 전달할 수도 있음.


nc로 데이터 주고 받기

1. echo

접속하자마자 1234 출력됨

2. 바이너리 파일

ls 에 대한 바이너리 파일을 1233 디렉토리 아래에 복사함
ls 바이너리 파일을 보냄
받은 파일을 kkk에 저장
kkk 파일에 실행권한을 준 뒤 실행해보면 ls 프로그램이 실행되는 것을 확인할 수 있음


Netcat 으로 웹서버 만들기

Netcat TCP 프로토콜 상에서 자유롭게 데이터 송수신을 하게해줌

HTTP 프로토콜은 TCP 위에 올라감

HTTP 프로토콜을 직접 구현해주면 웹서버를 만들수있음.

 

v1단계: index.html 파일 만들기

index.html 파일에, 웹브라우저상 나타날 내용을 작성하세요

) hello world. .

 

v2단계: HTTP 프로토콜 수기작성

모든 요청에 대해서 무조건 HTTP/1.1 200 OK 로 응답하기.

아래의 명령어를 작성후 실행

while :; do printf "HTTP/1.1 200 OK\n\n$(cat index.html)\n" | nc -N -l -p 8000;done

 

v해석

While :; do … ;done -> 명령어 무한반복실행

Printf “HTTP/1.1 200 …. $(cat index.html)” -> HTTP 프로토콜과 index.html 메시지 연결 ($() 는 쉘에서 치환기능)

| nc –N –l … -> 파이프를 통해서 printf 의 출력을 netcat 의 입력으로 전달

 

v3단계: 웹브라우저로 웹서버 접속

http://localhost:8000 으로 접속시도

우분투 가상머신 속에있는 파이어폭스 브라우저로 접속할것

- 자신이 작성한 index.html 파일내용 확인

 

 

 

 

LIST

'수업 > pwnable' 카테고리의 다른 글

[기말] buffer overflow  (0) 2021.06.07
[기말] 리눅스 명령어  (0) 2021.06.07
[기말] 커맨드 인젝션  (0) 2021.06.07
10주차 이론  (0) 2021.06.06
[기말] 쉘코드(ShellCode)  (0) 2021.06.05