본문으로 건너뛰기
Reincubate

Technology, security analysis

SQLite 데이터 복구를 통한 iOS 포렌식: 심층 분석과 비교

Aidan Fitzpatrick게시일: 2018년 6월 1일업데이트: 2020년 2월 17일
이 페이지에서
Cover image for: SQLite 데이터 복구를 통한 iOS 포렌식: 심층 분석과 비교

저희 제품으로 사람들이 데이터를 복구하도록 돕는 데는 여러 기술이 쓰이며, 지난 10년간 쌓아 온 기술력 대부분은 눈에 보이지 않는 곳에 있습니다. 오늘은 삭제된 메시지를 복구하는 데 사용하는 접근 방식 중 하나인 SQLite 데이터의 포렌식 복구를 깊이 있게 살펴보겠습니다.

그런데 iPhone은 데이터를 어떻게 저장할까요?

간단히 말해, 많은 앱이 데이터를 데이터베이스에 저장하며 대부분 SQLite 형식을 사용합니다. SQLite는 서버가 필요 없는 작고 깔끔한 데이터베이스 형식으로, Apple과 앱 개발사의 요구에 잘 맞습니다. SQLite는 별도의 데이터베이스 서버 없이 실행되기 때문에 다른 데이터베이스와 다른 점이 몇 가지 있습니다. 특히 빠른 접근 속도를 위해, 사용 중에는 스스로를 주기적으로 정비할 수 없습니다. 예를 들어 데이터베이스가 인덱스를 정리하는 것 같은 정기 유지 관리를 하느라 앱이 느려지는 것을 원하는 사용자는 없습니다.

SQLite에서도 이런 정리나 최적화 작업을 할 수는 있지만 자주 실행되지는 않습니다. 사용자에게는 이것이 적절한 균형입니다. iPhone은 충분히 빠르고 데이터는 안정적으로 유지됩니다. 그리고 필요한 경우, 이런 유지 관리 작업이 드물게 실행되는 덕분에 삭제된 iOS 데이터를 복구할 가능성이 평균보다 높아집니다.

너무 기술적으로 들어가지 않아도, 원리는 꽤 간단합니다. 이 데이터베이스들을 커다란 서류 캐비닛이라고 생각해 보세요.

  • 캐비닛에 정보를 추가할 때는 파일에 내용을 설명하는 깔끔한 라벨을 붙여 넣습니다. 휴대폰이 동작하는 방식이 이와 같습니다.
  • 하지만 데이터를 지울 때는 캐비닛에서 파일을 꺼내는 대신 휴대폰이 라벨만 떼어 냅니다. 그래서 오래된 데이터는 제거되지 않고 라벨이 없는 상태로(기술적으로는 “고아(orphaned)” 상태라고 부를 수 있습니다) 남습니다. 즉 데이터를 삭제해도 캐비닛의 공간을 비우는 비교적 느린 과정을 거칠 필요가 없습니다. 그저 “음, 이건 잊어버리자” 하고 넘어갑니다.
  • 데이터를 더 추가할 때는 공간이 있으면 파일을 추가합니다. 공간이 없으면 라벨 없는 파일이 남아 있는지 확인하고, 있다면 공간을 만드는 데 필요한 부분을 버립니다.

여기서 알 수 있는 것은 휴대폰에서 데이터를 삭제하는 것은 빠르고, 공간이 있다면 추가하는 것도 꽤 빠르다는 점입니다. 그리고 직관적이지는 않지만, 오래된 정보가 실제로 사라지게 되는 것은 새로운 데이터를 추가하는 과정 때문입니다.

iOS의 SQLite에서 삭제된 정보 복구하기

휴대폰을 두어 달 사용했다고 해 보겠습니다. 휴대폰의 데이터베이스는 앞서 설명한 서류 캐비닛과 같습니다. 안에는 여러 파일이 있고, 삭제한 데이터의 파일도 그대로 남아 있지만 두 가지 조건이 붙습니다. 일부 또는 전체가 덮어쓰였을 수 있고, 라벨이 없는 상태라는 점입니다.

복구 기법은 예상하는 그대로입니다. 이렇게 고아가 된 파일(온전한 것이든 아니든)을 찾아 어디에 들어맞는지, 의미가 통할 만큼 데이터가 남아 있는지 확인하는 일입니다. 짐작하듯 꽤 까다로운 작업이며, 여기에 일을 어렵게 만드는 여러 기술적 문제가 더해질 수 있습니다. 특히 크기가 수 메가바이트를 넘는 데이터베이스나 바이너리 데이터가 들어 있는 데이터베이스는 과정을 훨씬 더 어렵게 만듭니다.

그래도 일부 데이터를 되살리는 것은 그리 어렵지 않습니다. 시중에 이를 할 수 있다고 주장하는 도구가 많은 이유입니다. 이런 도구는 대체로 세 가지로 나눌 수 있습니다.

  • 좋은 도구. 수천 가지 삭제 또는 손상 사례를 대상으로 구축하고 테스트한 다양한 기법을 사용합니다.
  • 나쁜 도구. 형태가 완벽하고 어디에 속하는지에 대한 단서가 충분히 남은 콘텐츠만 복구합니다.
  • 추한 도구. 고아 콘텐츠를 스캔해, 눈을 가늘게 뜨고 보면 맥락에 맞을 것 같은 온갖 낡은 쓰레기를 표시합니다. “NSMutableArray”가 사라진 연락처 기록의 이름일까요? 글쎄요.

실제 환경에서의 iOS SQLite 삭제 복구

이제 원리를 조금 이야기했으니, 실제 환경에서 얼마나 효과적인지 살펴보겠습니다. 결국 저희는 평범한 사용자가 전문가가 아니어도 데이터를 되찾을 수 있도록 돕고자 하니까요. 과연 그렇게 하고 있을까요? 선도적인 SQLite 복구 도구 네 가지를 iPhone Backup Extractor와 비교해 벤치마크해 보겠습니다. 이 글을 쓰는 시점에 각 도구의 최신 버전은 다음과 같습니다.

이름버전 및 출시일플랫폼가격
Reincubate iPhone Backup Extractor7.6.1.2201, 2018년 5월Windows 및 macOS$34.95
SQLabs의 SQLite Doctor1.3.0, 2013년 8월Windows 및 macOS$49
SysTools의 Sqlite Database Recovery1.2, 출시일 표시 없음Windows 전용$149
Stellar Data Recovery의 Stellar Phoenic Repair For Sqlite 1.0, 출시일 표시 없음Windows 전용$599
GetData의 Forensic Explorer (FEX)4.3.5.7364, 2018년 5월Windows 전용$1,695
Acquire Forensics의 Sqlite Forensics Explorer2.0, 출시일 표시 없음Windows 전용$149

이 테스트를 설정하기 위해 실제 데이터로 가득 찬 커다란 데이터베이스를 사용하겠습니다. 이번에는 iOS 11을 실행하는 iPhone에서 가져온 169MB 크기의 “Messages” 데이터베이스입니다. 살펴볼까요. 다음 명령은 파일 크기와, 메시지가 몇 개 들어 있는지 세는 쿼리의 결과를 보여줍니다.

$ ls -l sms.db
-rw------- 1 afitzpatrick 177565696 Oct  2  2017 sms.db

$ sqlite3 sms.db
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite> SELECT COUNT(*) FROM message;
220261

메시지는 22만 개가 넘습니다. 삭제되지 않은 메시지들입니다. 그렇다면 복구 도구들은 삭제된 메시지를 몇 개나 찾아낼 수 있을까요?

iOS의 SQLite 데이터 복구: 결과 공개

위에 나온 모든 도구를 같은 파일에 실행하고 결과를 아래 표에 기록했습니다. Mac을 사용하고 싶었지만 모든 도구가 macOS를 지원하는 것은 아니어서, RAM 16GB의 PC에서 Windows 10 Pro(버전 1803, 빌드 17134.48)를 사용했습니다.

ReincubateAcquire ForensicsSQLabsSysToolsStellar Data RecoveryGetData
복구된 수34256개(대부분 쓰레기 데이터)00개(오랜 스캔 끝에 220,261개를 찾았지만, 이는 이미 존재하는 유효한 레코드 수와 같습니다!)0개(실행할 때마다 삭제된 메시지를 37개까지 세다가 작업을 끝내기 전에 오류 0x40000015로 중단되었습니다. 내보내기나 저장은 하나도 할 수 없었습니다.)0 (We reached out multiple times to purchase a license, but never heard back.)
“쓰레기” 데이터 복구 여부없음. 모두 삭제되지 않은 유효한 메시지로 보입니다. 이모지, 날짜, 시간, 발신자 및 수신자 번호가 모두 복구됩니다.복구된 항목 대부분이 쓰레기 데이터입니다다른 매개변수를 시도하려고 최대 ROWID 값을 수동으로 여러 번 입력해야 했습니다. 어느 시점에도 복구된 것이 없었습니다.기존 메시지만 찾았습니다.매번 중단되어 확인할 수 없었습니다.Wasn’t possible to get it running.
복구된 메시지당 실질 비용(이 예시 기준)$0.10$2.66>$49>$149>$599>$1,695

네, 조금 놀라운 결과였습니다. 다른 도구들도 최소한 일부 데이터는 복구할 것으로 예상했기 때문입니다. 알고 보니 SQLite 데이터 복구 전용 도구가 아닌 저희의 소박한 도구가 SQLite 데이터 복구 분야를 선도하고 있습니다. (궁금하셨다면, 그래서 저희가 이 기술을 다른 회사에도 라이선스로 제공하는 것입니다. 이건 정말 어려운 일입니다.)

iOS 버전별 SQLite 데이터 복구

Apple은 iOS를 새로 출시할 때마다 운영 체제가 SQLite 데이터베이스를 다루는 방식을 바꿀 수 있습니다. 여기에는 정리 및 기타 유지 관리 작업이 얼마나 자주, 언제 실행되는지에 대한 최적화도 포함됩니다.

기기가 강력해질수록 이런 작업이 사용자 경험에 미치는 영향이 작아져서 더 자유롭게 사용할 수 있습니다. 그래서 세대가 바뀔 때마다 SQLite 데이터베이스는 더 자주 정리될 가능성이 높고, 그 덕분에 일반적인 작업에서 데이터베이스가 더 빨라지는 이점이 있습니다. 이는 기기에 불필요한 데이터가 남지 않으므로 사용자 데이터 보호와 개인정보 보호를 강화하려는 Apple의 목표와도 맞닿아 있습니다. 하지만 SQLite 방식으로는 데이터 복구가 불가능해진다는 단점이 있습니다.

iOS 11에서는 SMS와 iMessage의 데이터베이스 정리 활동이 늘어나기 시작했습니다. 복구는 여전히 가능하고, 이후에 삭제된 비교적 최근 메시지일수록 가능성이 높지만 보장되지는 않습니다.

iOS 12에서는 SMS와 iMessage 데이터베이스의 정리 빈도가 크게 늘었습니다. 이번 릴리스가 유지 관리와 속도 개선에 큰 비중을 둔 것으로 알려졌으니, 이 변화는 더 일반적인 작업에서 더 매끄러운 성능으로 이어질 가능성이 높다는 점에서 납득이 갑니다.

iOS 데이터를 복구할 때 이를 활용하려면 무엇을 해야 하나요?

어쩌면 이것이 가장 좋은 점입니다. 이 기술은 Reincubate iPhone Backup Extractor에 통합되어 있으며 초기부터 그래 왔습니다. 앱을 사용하는 동안 메시지와 여러 다른 데이터 유형을 미리 보거나 내보낼 때 이 기술이 적용됩니다. 보고 있는 데이터와 보는 방식에 따라, 앱은 어떤 데이터가 삭제 복구되었고 어떤 데이터는 그렇지 않은지 표시합니다. 모두 기본으로 포함되어 있습니다.


작성자 소개

Aidan Fitzpatrick

창립자 겸 CEO

Aidan은 세계 최초의 iOS 데이터 복구 도구를 개발한 후, 2008년에 Reincubate를 설립했습니다. 이후 그는 AMD, Qualcomm, HP와 같은 기업들과 협력하여 Camo 앱 생태계를 필두로 비디오 소프트웨어를 위한 의미 있는 머신러닝 기능을 개척하며, 회사를 세계 최고의 ISV 중 하나로 성장시켰습니다. Aidan의 리더십 아래 Reincubate는 영국 최고의 비즈니스 상을 네 차례 수상했고, The Sunday Times의 100대 기술 기업 리스트에 이름을 올렸으며, Apple 디자인 어워드와 App Store 후보 지명으로 업계의 인정을 받았습니다. 그의 연구와 기법은 모바일 포렌식 관련 학술 논문에서 자주 인용되며, Google, Microsoft, Snap과 같은 기업이 주최하는 행사에 연사로 초청받은 바 있습니다.


댓글 (1)

jon 2019년 5월 22일

I have a question. When apple release new ios , do they provide any information about schema change? or we can get them from ios backup. Thanks in advance.

Reincubate 지원팀의 답변 2019년 5월 22일

Hey Jon. Apple don't, and it's not just them changing things: any time a third-party app gets updates things can change. We have a set of tools and a team testing these things every day.


관련 콘텐츠


인기 게시글

King's Award for Enterprise 로고

King's Award for Enterprise: Reincubate는 영국 최고의 공식 비즈니스 영예를 네 차례 수상했으며, 가장 최근에는 지난 3년간의 뛰어난 성장을 인정받았습니다.

사용자 및 파트너와의 관계는 우리의 가치와 우리가 만드는 제품의 핵심입니다. 리뷰을(를) 통해 그들의 이야기를 들어보세요.

Centre for Assessment의 ISO 27001 인증, UKAS 공인

© 2008-2026 Reincubate Ltd. 모든 권리 보유. 잉글랜드 및 웨일스 등록 번호 5189175, VAT 번호 GB151788978. Camo®, Streamlight® 및 Reincubate®는 등록 상표입니다. 특허 출원 중.

도움말