워크숍 접수 클라이언트 다시 연결하기

NmapBeginner
지금 연습하기

소개

Willow Workshop에는 CLAY-OPEN 참가자 명단이 필요하지만, 명단 클라이언트는 아직 닫힌 이전 포트를 가리킵니다. 같은 실습 환경에는 유용한 참조 서비스와 보관 서비스도 있으며 이들을 유지해야 합니다. 현재 서비스를 찾아 클라이언트를 다시 연결하고 현재의 전체 명단을 저장하세요.

Nmap으로 열린 포트, 식별된 프로토콜, 실제 필요한 업무를 구별합니다. 기본적인 터미널 및 경로 지식이면 충분하며 필요한 옵션은 설명합니다. 사람과 레코드는 모두 합성 데이터입니다. 별도 컴퓨터가 아니라 하나의 실습 컨테이너 안에서 동작하는 실제 HTTP 서비스입니다. 계속 Terminal 탭을 사용하세요. 127.0.0.2의 TCP 포트 8100-8199만 스캔합니다. 서비스와 플랫폼 설정은 변경하지 마세요.

정상 명단 읽기

이 단계에서는 실패하는 연결을 조사하기 전에 정상적인 업무 조회를 확인합니다. Terminal에서 시작하세요. cd는 현재 셸의 작업 디렉터리를 바꿉니다. 이후 상대 경로는 이 위치를 기준으로 합니다. 다른 터미널을 열면 다시 실행하세요.

cd /home/labex/project/workshop

준비된 workshop-client는 작은 HTTP 클라이언트입니다. ./는 현재 디렉터리의 프로그램을 선택합니다. 클라이언트는 주소 파일에서 기본 URL 하나를 읽고 /roster.tsv를 요청해 레코드를 표시하며 응답을 그대로 저장할 수 있습니다. 다른 서버를 찾거나 설정을 고치지는 않습니다. --endpoint는 주소 파일을, --save는 출력 파일을 지정합니다. 텍스트 파일을 표시하는 cat으로 참조 주소를 읽으세요.

cat reference.txt

http://127.0.0.2:8120이 표시됩니다. 주소는 목적지를, 콜론 뒤 포트는 수신 대기 서비스를 선택합니다. HTTP는 이 클라이언트의 요청 및 응답 프로토콜입니다.

./workshop-client --endpoint reference.txt --save reference-roster.tsv

Session: ORIENTATION, 레코드 두 개, Saved 2 records to reference-roster.tsv가 나와야 합니다. 파일은 TSV 형식으로, 헤더 행과 레코드의 열을 탭 문자로 구분합니다. session_id는 회차를 식별하고 나머지 열은 참가자와 물품을 설명합니다. 이것은 정상 참조 예시이며 CLAY-OPEN 결과가 아닙니다.

--endpoint가 없으면 클라이언트는 endpoint.txt를 읽습니다. 내용을 확인하세요.

cat endpoint.txt

현재 설정을 시험하세요.

./workshop-client --save roster.tsv

이 명령은 의도대로 실패하며 Client error와 연결 거부 설명이 나옵니다. 이전 포트에는 수신 대기 프로그램이 없습니다. 이는 연결 실패이며 HTTP 권한 거부나 명단 형식 문제는 아닙니다. 실패 시 명단은 저장되지 않습니다. reference.txt, 클라이언트 프로그램과 모든 서비스는 그대로 두세요. endpoint.txt를 바꾸고 이 작업 공간에 증거 및 다운로드 파일을 만드는 것은 허용됩니다.

허용된 서비스 포트 찾기

이 단계에서는 애플리케이션을 추측하지 않고 후보 포트를 찾습니다. Terminal의 /home/labex/project/workshop에 머무르세요. TCP 포트의 open 상태는 연결을 받아들였다는 뜻이지만 어떤 회차를 제공하는지는 알려주지 않습니다.

Nmap의 기본 스캔은 자주 쓰는 포트 집합을 검사하며 모든 포트를 검사하지는 않습니다. 허용 범위는 8100-8199 전체입니다. -sT는 TCP connect 스캔을 선택하며 여기서는 원시 패킷 권한이 필요 없습니다. -n은 역방향 이름 조회를 생략하고 -p는 포트 범위를 지정합니다. -oX는 구조화된 XML을 저장하며, Nmap은 읽기 쉬운 결과도 함께 출력합니다. XML은 대상, 프로토콜, 포트와 상태를 연결해 이후 확인에 사용합니다.

nmap -sT -n -p 8100-8199 -oX ports.xml 127.0.0.2

TCP 포트 8120, 8142, 8187이 열리고 범위의 나머지 포트는 닫혀 있어야 합니다. SERVICE 열에는 관례적인 이름이나 unknown이 나올 수 있습니다. 능동 식별이 없다면 포트 데이터베이스의 단서일 뿐 실제 애플리케이션의 증거가 아닙니다. 열려 있다는 사실이나 익숙한 이름만으로 서비스를 선택하지 마세요.

대상이나 범위의 오타는 잘못된 판단을 유발합니다. 명령을 수정해 다시 실행하고 ports.xml을 교체하세요. 나중에 파일을 찾을 수 없다면 pwd로 현재 디렉터리를 확인하고 1단계의 cd로 돌아오세요. 플랫폼 주소나 포트까지 범위를 넓히지 마세요.

후보 서비스 식별하기

이 단계에서는 후보를 식별하고 업무 설명을 비교합니다. 계속 Terminal을 사용하세요. -sV는 애플리케이션 탐침을 보내고 --version-light는 더 작은 탐침 집합으로 불필요한 작업을 줄입니다. 제품 버전을 알 수 없다는 사실은 서비스 고장의 증거가 아닙니다.

Nmap Scripting Engine, 줄여서 NSE는 목적에 맞는 애플리케이션 요청을 수행할 수 있습니다. 필요한 스크립트 하나의 도움말을 읽으세요.

nmap --script-help http-title

http-title은 HTML 페이지 제목을 가져옵니다. 인수인계 정보에 따르면 세 후보는 모두 워크숍의 HTTP 주소입니다. 앞의 +는 오래된 프로토콜 데이터베이스가 특이한 포트나 서버 헤더를 인식하지 못해도 해당 스크립트를 명시적으로 실행합니다. 이미 알려진 HTTP 범위이기에 적절하며, 관련 없는 서비스에 임의의 스크립트를 강제로 실행할 근거는 아닙니다. --script-args는 이름 있는 인수를 전달하고, http-title.url=/about은 기본 경로 대신 설명 페이지를 요청합니다.

nmap -sT -n -sV --version-light --script=+http-title --script-args=http-title.url=/about -p 8120,8142,8187 -oX services.xml 127.0.0.2

Nmap done까지 기다리세요. http-title 행을 비교합니다. Orientation은 참조 서비스, Clay Archive는 이전 회차, Clay Open Studio는 CLAY-OPEN 후보입니다. 현재 주소의 포트는 8187입니다. VERSION 열은 달라질 수 있으며 명시한 HTTP 스크립트가 동작해도 unknown일 수 있습니다. 버전을 지어내지 말고 실제 스크립트 응답을 읽으세요.

제목은 후보를 좁히지만 명단의 정체와 완전성을 입증하지는 않습니다. 다음에 클라이언트로 확인합니다. 잘못된 서비스를 현재 서비스처럼 보이게 하려고 서버 제목이나 레코드를 편집하지 마세요. 스캔을 중단했다면 다시 실행하고 완료까지 기다리세요. 불완전한 XML은 증거로 적합하지 않습니다.

다시 연결하고 현재 명단 저장하기

이 단계에서는 스캔 결과를 실제 클라이언트 설정에 반영합니다. Terminal에 머무르세요. 주소 파일은 /about이나 /roster.tsv 없이 HTTP 기본 URL 하나를 담습니다. 리소스 경로는 클라이언트가 붙입니다.

printf는 서식에 맞춰 텍스트를 출력합니다. 여기서 '%s\n'은 문자열과 그 뒤의 줄바꿈을 뜻합니다. 작은따옴표는 안의 내용을 문자 그대로 유지합니다. >는 출력으로 지정 파일을 덮어쓰므로 편집 가능한 endpoint.txt만 사용하세요.

printf '%s\n' 'http://127.0.0.2:8187' > endpoint.txt
cat endpoint.txt

설정한 서비스를 조회하고 원본 응답 전체를 저장하세요.

./workshop-client --save roster.tsv

Session: CLAY-OPEN, 참가자 레코드 세 개, Saved 3 records to roster.tsv가 나와야 합니다. 실제 저장 파일을 읽으세요.

cat roster.tsv

헤더 다음에는 W01/Ana/Clay kit, W02/Sam/Glaze kit, W03/Lee/Clay kit가 있어야 하며 모두 CLAY-OPEN에 속해야 합니다. 보관 서비스도 HTTP 200과 유효한 명단을 반환할 수 있지만 업무 결과로는 틀립니다. 다른 회차를 얻었다면 주소를 수정해 클라이언트를 다시 실행하세요. 잘못된 형식의 기본 URL은 설명이 있는 Client error를 발생시킵니다. 제공 프로그램을 바꾸지 말고 URL 하나만 교체하세요.

마지막으로 참조 명단을 다시 읽어 유용한 기존 기능이 유지되는지 확인하세요.

./workshop-client --endpoint reference.txt --save reference-roster.tsv

마지막 조회는 여전히 ORIENTATION을 반환해야 합니다. 현재 명단은 roster.tsv에 남습니다. 보관 서비스도 원래 용도로 계속 사용할 수 있습니다. 서버 재시작, 서버 설정 수정이나 서비스 삭제는 필요 없습니다.

요약

허용된 TCP 포트를 찾고 능동적인 서비스 및 HTTP 증거를 모아 실제 클라이언트를 올바른 회차에 다시 연결했습니다. 전체 명단, 올바른 주소, 유지된 참조 및 보관 서비스가 결과를 보여줍니다. 열린 포트, 익숙한 이름, 제품 버전 또는 HTTP 200만으로는 충분하지 않습니다.