오랜만에 풀어보는 거라 어느정도 복습하고 문제 풀이에 들어가야겠다.
시그니처: 파일의 가장 처음에 위치하는 특정 바이트들로 파일 포맷을 구분하기 위해 사용된다.
ex> jpeg 파일의 시그니처: FF D8 FF E1
맨 앞에 위치한 4개의 hex값들이 바로 파일의 시그니처이다. 이 시그니처를 통해 파일의 확장자를 알 수 있다.
메타데이터: 데이터에 관한 데이터로, 파일의 정보를 담고 있는 데이터를 뜻한다.
zip파일: local directory 부분과, central directory 부분으로 나누어져 있다. 각 부분들의 헥스값을 살펴 압축파일을 분석해야 하기 때문에, 살펴봐야 될 점이 많다.(개인적으로 압축 파일 포렌식 문제가 나오면 벌써부터 피곤해진다...☠️)
압축 파일에 들어있는 파일의 개수, 파일의 형식, 파일 크기 등을 알 수 있다.
오늘 해볼거
파일 확장자부터 범상치 않다. 대체 뭐지....? 일단 겉으로 봐서는 압축파일처럼 생기긴 했다.
그런데 다운받을 파일의 확장자를 살펴보니, 확장자가 2개나 붙어있다.
흠....?(신기하게 생긴 친구일세)
ㅣzma 압축파일: ㅣzma 알고리즘에 의해 구현된 압축 기법을 뜻한다.
일단, 압축파일을 풀어보고 hxd로 분석해 보아야 겠다.
시그니처는 7F 45 4C 46로, elf(리눅스 실행 파일)임을 알 수 있다. 그 외에는 딱히 단서가 없어보인다. 압축파일의 헥스값을 살펴보자.
??
아무래도 hxd로 푸는 문제가 아닌 듯 하다...ㅋㅋㅋ
raw 확장자에 대해 알아보자.
raw파일은 메모리 덤프 파일로, 이 파일을 분석하기 위해서는 volatility 프로그램을 이용하는게 좋다고 한다.(출처: 구글링)
volatility 프로그램은 기존 윈도우에는 없고 리눅스에 있다고 한다. 일단 다운받은 파일을 드라이브에 업로드하고, 리눅스를 켜 보자.
오랜만에 켜본다. 드라이브에서 백업한 파일을 다운 받고, volatility 프로그램을 실행시켜 보자. 먼저 필요한 파일들을 다운받아서 vol 프로그램을 실행할 환경을 만들어 보자.
할 게 많지만 어쩔 수 없다....
volatility 프로그램을 실행할 환경이 만들어지면, 아래 명령어를 실행시켜 보자.
sudo vol.pyt -f dump1.raw imageinfo
위의 명령어를 실행시키면 raw 이미지 파일에 대한 정보를 얻을 수 있다.
?????
ㅋㅋㅋㅋㅋㅋㅋ
컴퓨터가 내 말을 안듣는건 하루 이틀 일이 아니기에....한번 해결책을 찾아보자.
압축파일을 unlzma로 압축을 풀어보자. 그 후 다시 위 명령어를 실행시켜 보자.
.......
이전 스냅샷으로 되돌린 다음, 제대로 된 방식으로 설치하고, volatility를 실행시켜 봐야겠다. 아무래도 경로 상에서 문제가 생긴 것 같다...
이 문제는 문제점을 분석한 뒤, 다음 시간에 제대로 풀어오도록 하겠다.😭
오늘의 문제는 reflected xss 취약점을 이용한 문제이다. 문제를 직접 풀어보기 전에, 간단한 개념 정리를 하고 들어가도록 하겠다.
xss 공격에 대해서는 전에 올린 게시글에서 설명했지만, 간단하게 다시 설명해 보고자 한다. xss는 웹 어플리케이션에서 자주 나타나는 취약점 중 하나로, 관리자가 아닌 사용자가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점이다. 이 취약점은, 웹 어플리케이션이 사용자에게서 받은 값을 제대로 검사하지 않고 그대로 사용할 경우 나타난다. 이 취약점을 통해, 공격자가 사용자의 정보(쿠키, 세션 등)를 탈취하거나, 자동으로 비정상적인 기능을 수행하게 만든다.
악의적인 사용자가 악성 스크립트가 담긴 URL을 만들어 일반 사용자에게 전달하는 취약점이다. 공격 방식은, 악의적인 사용자는 URL 주소 뒤에 붙는 쿼리에 악성 스크립트를 작성해서 전달함으로서 이루어진다.
일단 사이트에 들어가보자.
간단하게 hello를 입력해 보고, 내가 입력한 값이 사이트에 어떤 방식으로 반영되었는지 살펴보자.
내가 입력한 문자열이, html문서에 삽입됨을 알 수 있다.
또한, url 주소 뒤의 쿼리에 내가 입력한 값이 반영되었음을 알 수 있다.
그렇다면 검색창에 악성 스크립트를 입력할 경우, 사이트는 스크립트를 반영하여 공격자가 의도한 동작을 하게 만들 수 있음을 알 수 있다.
아래 스크립트를 검색창에 입력해 보자.
"onmouseover="alert(1)
처음에는 아무 일이 일어나지 않는 것처럼 보이지만, 위의 명령어대로 마우스를 움직일 때마다 경고창이 뜨는 것을 확인할 수 있다.
이 url을 새 브라우저에 입력해서 실행시켜보면
아까와 똑같이 실행됨을 알 수 있다. 이것은 url 창을 보면 알겠지만, url 주소 뒤에 붙는 쿼리에 작성한 스크립트가 반영됨으로서, 다른 브라우저에서 새로 실행해도 똑같이 경고창이 뜨는 것이다.