Secure Shell (SSH)
> 원격에서 쉘 접속 가능
> remote 로그인하는 표준에 가까움
> 내용은 모두 암호화되어 있음
v ‘Secure 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
2. 바이너리 파일
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 파일내용 확인
'수업 > 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 |