Forensic/포렌식 공부

[패킷 분석] HackThePacket 분석

Ron Weasley 2022. 10. 13. 19:40

몇일 전, 아는 지인분에게 패킷 공부를 좀 하고싶다. 파일을 좀 달라해서 얻은 패킷 파일인 HackThePacket입니다.

 

난이도는 막 그렇게 어렵지 않으며, 저처럼 처음 네트워크 패킷 포렌식을 공부하는 입장에서는 간단하게 풀 수 있는 문제입니다!

 

문제를 한번 보겠습니다.

더보기

Telnet의 패스워드를 찾으시오.

 

80번 포트로 업로드 된 파일명을 찾으시오.


네이버에서 검색한 검색어를 찾으시오.(한글)


인터넷 쇼핑 중 실행된 웹쉘을 찾으시오?

찾아야 하는 문제는 총 4개로 바로 풀이를 해보도록 하겠다.


Telnet의 패스워드를 찾는 문제이다.

텔넷은 인터넷이나 로컬 영역 네트워크 연결에 쓰이는 네트워크 프로토콜이다. 쉽게 말해서 네트워크 관리를 할 수 있는 프로토콜입니다.

텔넷은 패킷이 잡힐 때, Protocol이 와이어샤크에서 TELNET으로 잡히기 때문에 쉽게 찾을 수 있다.

위 사진에 나와있는 검색 필터링에 telnet이라고 검색하면 텔넷만 나오게끔 필터링이 된다.

telnet 패킷을 필터링 하였으면 우클릭하고 [Follow] - [TCP Stream]을 하게 되면 문제에서 원하는 패스워드를 찾을 수 있게된다.

이것으로 보아 텔넷은 패킷을 보낼 때, 평문으로 전송하는 것을 확인할 수 있었다. 

그리고 텔넷에는 에코 현상이 발생하는데 login같이 lleeoo로 2번씩 입력되는 것을 볼 수 있다. 이건 텔넷에서 일어나는 현상이기 때문에 큰 이상은 없다.

 

다음은 80번 포트로 업로드 된 파일명을 찾는 문제이다.

networkminer 프로그램으로 해당 패킷을 던져보면 무수히 많은 file들을 확인할 수 있다.

네트워크 패킷안에 1353개의 파일이 존재하는데 도대체 80번 포트로 보낸 파일들이 뭘까..? 고민을 하다가 하나씩 찾는 노가다를 진행했다.

포트번호가 80번인 파일들이다.

이걸로 찾아보니 뭐가 정답인지도 모르겠고...눈도 아프고해서 와이어샤크로 분석을 진행하였다.

문제를 자세히 읽어보면 업로드 된 파일명이라고 하였다. 업로드면 HTTP 메소드를 찾아보면 되니까 구글에 검색을 진행했다.

HTTP 메소드에는 GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE 등등 존재하는데 각각의 설명은 다음과 같다.

더보기

GET : 주로 데이터를 읽거나 검색할 때 사용되는 메소드, 지정한 URL에 대한 정보를 요청

POST : 서버에 데이터 처리를 요구할 때 사용(서버의 특정 값이나 서버의 상태를 변경할 때 사용), 새로운 리소스를 생성할 때 사용

PUT : 리소스를 생성 / 업데이트하기 위해 서버로 데이터를 보내는 데 사용, 지정된 URL에 HTTP 파일을 저장

DELETE : 지정된 URL의 리소스를 삭제

PATCH : 리소스를 일부만 변경

HEAD : GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환

OPTIONS : 대상 리소스에 대한 통신 가능 옵션을 설명

TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행

 

* 리소스(resource) : 리로스란, 자원이라 불리며 사용될 수 있는 어떤 항목을 의미한다.

문제로 돌아가보면 파일을 하나 업로드 했다는것은 리소스를 생성했다는 의미가 된다.그렇기 때문에 PUT 메소드를 사용 했을 가능성이 있어 필터링으로 PUT만 검색해보도록 하자

패킷이 하나 잡히는데, iuzzang.txt 파일을 업로드 한 것으로 보인다.

 

다음 문제는 네이버에서 검색(서치)한 검색어를 찾아야 한다.

[File] - [Export Object] - [HTTP]를 들어가시면 http를 필터링하고 오브젝트를 뽑아옵니다.

결국엔 패킷 중 프로토콜이 http로 된 패킷들을 다 필터링 하여 가져온다는 얘기입니다.

호스트 네임을 보게되면 접속한 URL들을 확인할 수 있다. 결국엔 naver에서 검색을 했다면 search.naver.com 이런 느낌이 hostname에 잡힌다.

왜냐면 직접 naver에서 검색을 해서 url을 확인했더니 search.naver.com으로 나왔기 때문이다.

그럼...동일한 쿼리로된 구문으로써 검색을 했을테니까 search.naver.com과 query=로 된 패킷을 찾으면 된다.

1534번 패킷과 30061패킷을 보면 네이버에서 검색을 한 기록들을 확인할 수 있고, query= 뒤에 나오는 인코딩 된 문자열은 URL 인코딩 문자이기 때문에 복호화를 시켜주면 알 수 있다.

1534번 패킷을 토대로 본 네이버 검색어는 에이치티피이다.

30061번 패킷을 토대로 본 네이버 검색어는 데일리시큐이다.

이렇게 네이버에서 검색한 검색어는 2개로 에이치티피, 데일리시큐가 된다.

 

마지막 문제는 인터넷 쇼핑 중 실행된 웹쉘을 찾는 문제인데 전 시간에 배운 apache2 에서도 쉘 권한을 취득하기 위해 php 파일로 접근한 것이 기억이난다. 그래서 php를 검색했으나 답은 나오지 않았다. 그래서 구글링을 했더니 웹 쉘 공격은 jsp 파일이나 asp 파일로도 남을 수 있다고 한다.

 

웹 쉘

웹 셸(web shell)은 업로드 취약점을 통하여 시스템에 명령을 내릴 수 있는 코드를 말한다. webshell은 간단한 서버 스크립트 jsp,php,asp 로 만드는 방법이 널리 사용되며 이 스크립트들은 웹서버의 취약점을 통해 업로드 된다. 웹셀 설치시 해커들은 보안 시스템을 피하여 별도의 인증없이 시스템에 쉽게 접속 가능하다. (웹이 서버에서 구동되고 있다 하여도 취약점이 존재하지 않으면, 수행되지 않으며 만약 업로드되었다 하더라도 실행 권한이 없으면, 실행이 되지 않는다. 하지만 취약점과 실행권한이 존재할 때는 서버 내부에 명령을 수행할 수 있으므로 침해 범위가 넓어 질 수 있다.)

사용자로부터 입력된 시스템 명령어를 셸에 전달하는 기능을 가지고 있다.

이렇게 asp를 검색하여 패킷을 찾아봤더니 누가봐도 웹쉘일 것 같은 패킷이 보였다.

POST 메소드를 통해서 O+ne~Line@w&eb!sh@ell.asp;.jpg 즉, 웹 쉘이다. 라고 적혀있네요 ㅎㅎ

그리고  ;이 들어가면 제대로 인식못해서 확장자 필터를 우회해 asp 가 업로드되는 공격을 IIS6 파싱 취약점 이용한 공격 이었네요.

 

 

지금까지 간단한 패킷 분석을 진행했는데, 사실 텔넷은 진짜 쉬웠고 2번째 문제인 포트번호 80번 문제 업로드 파일과 웹 쉘을 찾는것이 어렵지만 구글링을 통해서 잘 나와있어서 쉽게 해결 했던 문제였던 것 같다.