Kali에서 도구 출력 읽기와 필터링

LinuxBeginner
지금 연습하기

소개

보안 도구는 메모, 반복된 관찰 내용, 진단 메시지가 섞인 긴 출력을 생성할 수 있습니다. 유용한 결과는 출처를 이해할 수 있는 관련 발견 사항의 작은 집합입니다.

이 실습에서는 스캔 도구를 실행하기 전에 제공된 텍스트 파일로 연습합니다. 내용을 읽고, 열린 서비스 기록을 필터링하고 중복을 제거하고, 개수를 세고, 오류를 유용한 출력과 분리합니다.

준비된 출력 파일 읽기

이 단계에서는 발견 사항을 추출하기 전에 준비된 텍스트 파일을 여러 방법으로 살펴봅니다. 직접 실행해야 하는 스캔의 출력이 아니라 샘플 데이터입니다.

준비된 Kali 셸을 여세요.

kali

절대 경로로 공유 작업 디렉터리를 선택하세요.

cd /home/labex/project

observations.txt 파일에는 NOTE, OPEN, CLOSED로 시작하는 짧은 줄들이 있습니다. 여기서 OPEN은 샘플 관찰 내용에 서비스가 열려 있다고 기록되어 있다는 뜻이며 취약점을 증명하지 않습니다. 작은 파일 전체를 출력하세요.

cat observations.txt

메모와 닫힌 서비스 줄뿐 아니라 반복된 열린 서비스 줄도 보입니다. 먼저 원본을 읽으면 의도한 정보를 보존하는 필터를 선택하는 데 도움이 됩니다.

긴 파일은 less로 파일을 바꾸지 않고 한 페이지씩 표시할 수 있습니다.

less observations.txt

필요하면 화살표 키로 이동한 다음 q를 눌러 종료하고 셸로 돌아오세요. 샘플은 한 화면에 들어갈 정도로 작지만, 같은 페이저를 더 큰 도구 출력에도 사용할 수 있습니다.

head는 파일 앞부분을 읽고 tail은 뒷부분을 읽습니다. -n 옵션은 표시할 줄 수를 정합니다. 첫 세 줄을 살펴보세요.

head -n 3 observations.txt

예상 출력:

NOTE supplied training observations
OPEN training-web:8080 http
CLOSED training-db:5432 postgresql

이제 마지막 두 줄을 살펴보세요.

tail -n 2 observations.txt

마지막 줄은 NOTE end of sample입니다. 첫 실습에서 소개한 > 연산자로 세 줄짜리 미리보기를 저장하세요.

head -n 3 observations.txt > preview.txt
cat preview.txt

미리보기에는 위와 같은 세 줄이 있어야 합니다. 원본을 그대로 유지하면서 유용한 일부 내용을 저장했습니다.

발견 사항을 필터링하고 정렬하고 중복 제거하기

이 단계에서는 열린 서비스 기록을 유지하고 중복을 제거하는 파이프라인을 만듭니다.

Kali 안에서 공유 작업 공간으로 돌아오세요.

cd /home/labex/project

grep은 일치하는 줄을 출력합니다. 아래 패턴은 셸이 그대로 전달하도록 작은따옴표로 감쌌습니다. ^ 앵커는 줄 시작을 뜻하며, OPEN 뒤의 공백은 기록 유형과 데이터를 구분합니다.

grep '^OPEN ' observations.txt

출력에는 반복된 줄을 포함하여 모든 열린 서비스 관찰 내용이 들어 있습니다. 메모와 CLOSED 줄은 없습니다.

파이프 기호 |는 한 명령어의 표준 출력을 다음 명령어의 표준 입력에 연결합니다. sort는 같은 줄이 서로 이웃하도록 줄을 정렬합니다.

grep '^OPEN ' observations.txt | sort

이제 반복된 줄이 모여 있습니다. uniq는 이웃한 동일 줄을 제거하므로, 중복 줄이 떨어져 있을 수 있다면 정렬 뒤에 와야 합니다.

grep '^OPEN ' observations.txt | sort | uniq

예상 출력:

OPEN training-dns:5353 dns
OPEN training-ssh:2222 ssh
OPEN training-web:8080 http

각 명령어는 한 가지 역할을 합니다. 기록을 선택하고, 정렬하고, 반복을 합칩니다. 결과 스트림을 별도의 출력 파일에 저장하세요.

grep '^OPEN ' observations.txt | sort | uniq > open-services.txt
cat open-services.txt

같은 세 개의 고유 기록이 보여야 합니다. 리디렉션은 파이프라인의 최종 출력에 적용되며 원래 관찰 내용은 편집되지 않습니다.

결과 개수를 세고 오류 출력 분리하기

이 단계에서는 선택한 발견 사항의 개수를 세고 정상 출력과 오류 메시지를 구분합니다.

공유 작업 공간에서 시작하세요.

cd /home/labex/project

wc는 텍스트의 개수를 셉니다. -l 옵션은 줄바꿈으로 끝나는 줄을 셉니다. 저장된 파일에는 한 줄에 발견 사항 하나가 있으므로, 이 개수는 서로 다른 열린 서비스 기록의 수입니다.

wc -l open-services.txt

출력에는 3과 파일 이름이 표시되며 간격은 다를 수 있습니다. 파이프라인은 파일 이름 인수 없이 텍스트를 전달하므로 개수만 저장하기에 편리합니다.

cat open-services.txt | wc -l > finding-count.txt
cat finding-count.txt

값은 3이며 앞에 공백이 있을 수도 있습니다.

프로그램은 일반적으로 유용한 데이터를 표준 출력으로, 진단 메시지를 표준 오류로 보냅니다. 셸의 >는 표준 출력을 리디렉션하며, 2>는 대신 표준 오류를 리디렉션합니다. 차이를 관찰하도록 의도적으로 없는 파일을 읽고 진단 메시지를 저장해 보세요. missing-observations.txt가 없으므로 다음 명령어는 실패하는 것이 정상입니다. 의도한 시연이므로 이후에도 계속 진행하세요.

cat missing-observations.txt 2> read-error.txt

오류 메시지가 read-error.txt로 전달되었으므로 화면에는 아무것도 나타나지 않아야 합니다. 별도로 저장된 진단 메시지를 확인하세요.

cat read-error.txt

메시지는 missing-observations.txt를 가리키며 파일이 없어 읽을 수 없다고 설명합니다. 실제 발견 사항은 여전히 분리되어 있습니다.

cat open-services.txt

세 개의 유효한 기록은 바뀌지 않았습니다. 진단 메시지를 분리해 두면 오류 메시지를 도구의 발견 사항으로 오인하는 일을 막을 수 있습니다.

요약

cat, less, head, tail로 텍스트를 읽고, grep으로 줄을 선택하고, sort와 uniq로 파이프라인을 구성하고, wc로 기록을 세고, 출력 및 오류 리디렉션을 사용했습니다. 이러한 기술은 장황한 도구 출력을 작고 확인 가능한 결과로 바꾸는 데 도움이 됩니다.