ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Digital Forensics Challenge(DFC) 2023 후기
    Forensics 2023. 11. 20. 21:16

    달라진 점

    작년에는 최대 6인으로 참가했던 대회가 올해에는 최대 4인으로 변경되었다. 이로인해 6명까지 구해놨던 인원을 4명으로 줄여야 해서 참가를 희망했던 팀원 2명은 같이 참가하지 못해 아쉬움이 조금 남았다. 하지만 4인으로 충분히 문제를 풀 정도의 난이도로 출제가 되어서 어렵지 않게 문제를풀어나갔다.

      

    문제 후기

    문제 후기는 내가 풀었던, 풀이에 참여했던 문제만 후기를 작성한다.

    5월 문제

    101 - where_is_the_starting_point_of_the_audio

    간단한 mp4파일 복구문제였다. mp4파일 구조를 공부한 후, mdat길이가 "00 00 00 00"으로 처리된 부분을 mdat의 실제 길이로 맞춰주면 풀리는 문제다. 

     

    302 - do_not_blink

    이 문제를 제외하고 5월은 모든 문제를 다 풀었다. 302번 문제는 다른 팀들도 말이 많았던 문제였다. 문제풀이 방법은  Video Steganography를 활용한 key, IV값 추출과 data steganography를 활용한 timestamp, 암호화된 이미지 복호화 그리고 image Steganography를 활용한 테러위치 확인 문제였다. 우리는 암호화 된 데이터까지 찾았지만, key뢍 IV를 가지고 도저히 데이터를 복호화 할 수 있는 방법이 없었다. 시상식때 유일하게 문제를 solve했던 1등팀의 write-up을 보았고, 우연히 CyberChef를이용해서 복호화에 성공할 수 있었다고 했다.

    이 문제의 문제점은 일반적으로 사용하지 않은 key와 IV의 길이가 문제였다. 모든 암호화 알고리즘을 파이썬으로 짜고 복호화를 시도해도 key와 IV가 맞지 않아서 파이썬에러가 나고, 키 뒤에값을 0으로 패딩처리해도 복호화가 되지않은 문제를 CyberChef에서만 풀이가 가능했던 문제였다. 

    왜 문제를 이렇게 만들었는지 듣고싶었지만 스테가노그래피 문제니까 그러려니 하고 넘어갔다.  

    6월 문제

    252 - password stealer

    침해사고 분석 문제였다. 주어진 이미지파일을 FTK Imager로 연 후, 웹 브라우저 로그를 보게 되면 구글 계정 해킹과 관련된 검색어와, 문서 편집프로그램, 그리고 "KeePass"라는 프로그램을 설치하는 검색기록을 확인할 수 있었다. 사용자(ppp) 계정의 Downloads 폴더에 접근하면 여러 프로그램을 설치한 것을 확인할 수 있었고, 그 중 KeePass와 viewer.exe라는 프로그램을 설치한 것을 확인했다. 여기에서KeePass의 버전을 획득했다. 

    이후 viewer.exe의 프로그램을 추출한 결과 파이썬으로 짜여진 프로그램임을 확인했다. 그래서 decompiler를 시도한 후 원본코드를 본 결과 CVE-2023-32784의 익스플로잇 코드인것을 확인했다. 코드는 KeePass의 취약점을 이용하여 패스워드를 얻은 후 C2서버로 masterkey,mac주소를 보내는 행위가 담겨져 있었다. 해당 c2서버에 접근하여 패스워드를 찾은 후, Database.kdbx데이터를 John-The-Ripper의 기능 중 keepass2john기능을 이용하여 해시를 추출하여 hashcat으로 패스워드 매칭을 시켜 문제를 해결했다.       

       

    304 - the_audio_must_be_erased_to_be_heard

    101번 문제의 확장된 문제다. mdat값을 맞춰주고 mp4파일을 분석하면 대략 1분의 영상길이인 것을 확인할 수 있었다. recover_mp4.exe을 이용하여 영상과 오디오 데이터를 따로 추출해준 후, ffmpeg를 이용하여 mp4파일을 복구하면 문제를해결할 수 있었다.  

    7월 문제

    152 - Find_video_and_time_info

    이것도 영상 복구 문제였다. 블랙박스는 보통 자막, 오디오데이터 앞이나 뒤에 timestamp가 들어간다. 블랙박스 데이터 구조를 분석하여 실제 영상에서 실행되는 시각과 raw data에서 쓰여져있는 실행시각을 비교해서 문제를 해결했다.  

     

    305 - Unveiling_the_Illusion

    AI 모델을 만드는 문제였다. 문제를 받고 학습셋이 많지가 않아 운영측에 많은 문의를 넣어본결과 "외부 데이터 사용 가능", "외부 모델 사용가능"이래서 그냥 외부모델을 사용하자 했고, 모델성능이 좋은 grag2021_latent를 사용하기로 했다. 하지만 이 모델만 사용하면 F1-Score가 그렇게 좋게 나오지 않았고, 코드를 조금씩 수정하며  주어진 데이터셋을 resize하지않고 원본데이터로 테스트셋을 돌렸다. 결과는 F1-Score 0.9715로 높게 나왔다. 

    여기서 조금 더 F1-Score를 올리기 위해 Threshholds 조절을 하여 최종적으로 0.9978의 결과로 높은 점수를얻게 되었다. 

    8월 문제

    202 - why_is_not_playing

    이 문제는 avi 형태의 비디오를 복구하는 문제였다. NAL Unit을 공부해서 PPS NALU값을 보정해주고 청크사이즈를 맞춰주면 풀리는 문제였다.

     

    401 - Find_an_illegally_filmed_image

    진짜 열심히 풀었는데 이 문제때문에 내년부터는 디포챌 참가를 고민하게 되는 많은  생각을 하게 해준 문제다. 대회 종료 1주전 쯤에 주최측에서 문제를 바꿔버렸고 우리는 어렵게 푼 문제였는데 난이도가 갑자기 내려가서 3위를 하게해준 문제다.

    처음 문제의 의도는 다음과 같았다.

    "Pixel 3, Android 10 버전의 스마트폰의 패스워드 잠금을 해제하여 마스터 키를 찾아라" 하지만 바뀐 문제에서는 저 "패스워드 잠금을 해제하여"가 사라진다. 

    제공된 Description에 따르면 용의자의 스마트폰은 기기의 전원이 off된 상태에서 패스워드를 unlock하지 않고 수집된 이미지이다. 이에 따르면 android 10에서는 CE저장소는 FBE키가 메모리가 로드된 상태가 아니므로 패스워드를 찾아 정상적인 FBE키를 찾아서 CE저장소를 복구해야 하는 문제였다. 패스워드를 해제하라는 힌트도 트위터, Description에서도 충분히 나온 상황이라서 문제가 이상이 없다고 생각했다.

    하지만 주최측은 트위터에 기재된 패스워드 관련 글은 단순 홍보용이였고, Description내용을 수정해서 문제를 완전히 바꿔서 재출제를 해버렸다.             

    이에따라 추최측은 우리팀이 이 문제에 대해서 발표가 진행될 수도 있고, 워크샵때 공지가 된다고 했는데 발표도 하지 않았고, 워크샵에서 공지를 따로 해주지도 않았다.    

     

    아쉬운점

    5개월동안 열심히 문제를 풀었고, 1등팀, 2등팀도 최선을 다해서 문제를 풀어주었기에 마지막까지 3팀이 거의 만점을 받고 있는 상황에서 우리팀은 이 문제를 해결해서 더 높은 순위를 기대했지만, 갑자기 문제 난이도가 쉬워진 탓에 분별력이 없어진 문제가 되어버린 상황이다. 물론 다른 팀들도 문제를 풀 실력이 충분하다는 걸 알고있기에 결과가 바뀌지 않았을 수도있었겠지만, 한편으론 기대하고있었던 탓에 대회 운영에 대해 불만이 많아졌다.

    또한 이러한 문제를 소통할 수 있는 수단이 이메일로 밖에 답변을 듣지 못하는것도 아쉬움이 있다. 대회종료가 얼마 남지 않은 상황에서 문제가 바뀌면 적어도 빠르게 항의할 수있는(Discord같은) 수단이 있었으면 좋았을것 같았고, 매번 문제가 영문으로 출시가 되는데 해석의 문제도 있어서 그냥 문제출제할 때 한글로된 문제와 영문으로된 문제를 둘 다 줬으면 하는 바램이 있다.

    'Forensics' 카테고리의 다른 글

    KDFS 2023 후기  (0) 2023.11.20
Designed by Tistory.