Side Channel Data Leakage

justugi·2024년 7월 9일
0

DVIA

목록 보기
6/11

주의사항 : 이 포스팅은 개인 학습 및 교육적 목적으로 작성되었으며, 제공하는 정보를 악용하여 불법적인 행위를 하는 것은 엄격히 금지되어 있습니다. 타인의 시스템에 대한 접근 권한을 얻기 위해 명시적인 동의를 받아야 하며, 이러한 기술을 사용하여 발생하는 모든 결과에 대한 책임은 사용자에게 있습니다.

Side Channel Data Leakage

: 사이드 채널 데이터 유출 취약점은 애플리케이션이 중요한 데이터가 실수로 유출되는 취약점이다.


Device Logs

: 개발자가 개발 단계에서 애플리케이션을 디버깅 하기 위해 추가한 로그 기능을 배포 시점에 제거하지 않고 그대로 올려 중요 정보는 디바이스 로그에 기록되는 취약점

  • 입력값이 로그로 저장되지 않는다.

대응 방안

  • 앱 배포 시 로그 활성화 여부를 확인하고 중요 정보는 디바이스 로그에 기록되지 않도록 조치한다.

App Screenshots

: 애플리케이션이 백그라운드로 들어갈 때 스크린샷을 찍는 것으로, 사용자에게 UI를 원활하게 보여주기 위해 사용된다.

  • 스크린샷에 중요한 정보가 담길 수 있고 적절한 보호조치 없이 애플리케이션 샌드박스에 저장되어 쉽게 확인 가능하다.
  1. 앱 실행 후 중요 데이터를 입력한 뒤 백그라운드에서 실행중인 앱 조회

  • 위의 앱 이미지는 백그라운드 전환 직전 자동으로 찍힌 스크린샷 이미지이다.
  • 중요정보가 그대로 노출되고 있다.
  1. App Screenshots 파일 확인
  • Filza 로 /var/mobile/Containers/Data/Application/$uuid/Library/SplashBoard/Snapshots/ 경로 내의 폴더의 ktx 파일 열람

  • 중요정보가 그대로 노출되고 있다.

대응 방안

  • 애플리케이션이 백그라운드로 전환될 때 스크린샷은 애플리케이션의 메인 화면 또는 중요한 데이터가 노출되지 않는 화면을 사용한다.

pasteboard

: 일부 텍스트를 복사하면 Pasteboard 버퍼에 저장되어 다른 애플리케이션이 해당 버퍼에 저장된 데이터를 가져올 수 있다.

  • Pasteborad(붙여넣기) : 애플리케이션 내에서 또는 애플리케이션 간에 데이터를 교환하기 위한 표준화된 메커니즘

  • 복사한 중요한 텍스트가 Pasteboard 에 포함되어 있으면 다른 애플리케이션에서 가져와 데이터 유출 될 수 있다.

  1. cvv 영역 복사

  1. pasteboard 버퍼 확인
// Pasteboard.js

function start_pasteboard_monitoring(interval_value)  // 함수 선언 후 인자 값 interval_value 설정!
{
    var pasteboard = (ObjC.classes.UIPasteboard).generalPasteboard(); // 클래스는 .이든 []이든 둘다 사용 가능
                                                                      // generalPasteboard 메소드 사용!
    var latest_word = ""; // 빈 문자열 선언
    setInterval(function(){   // 2초마다 실행되도록 설정하는 코드 블럭
        try
        {
            var on_pasteboard = pasteboard.string().toString() // 클립보드의 문자열 호출
            if(on_pasteboard != latest_word)  // 한번 출력된 값이 재 출력 안되도록 설정!
            {
                console.log("[*] Found on pasteboard: "+ on_pasteboard); 
                latest_word = on_pasteboard;
            }
        }
        catch(err)
        {
            a = "";
        }
    }, interval_value);  // 인자 값

}
//start_pasteboard_monitoring(INTERVAL_VALUE_HERE_MILLISECONDS)
start_pasteboard_monitoring(2000) // 함수 호출 - 2초마다 실행

  • 복사했던 값을 확인 가능하다.

대응 방안

  • 중요한 데이터를 다루는 곳에서는 Custom Pasteboard 또는 가상 키패드를 사용한다.
  • 중요한 데이터가 Pasteboard 버퍼에 저장되지 않도록 조치한다.

Keystroke logging

: 텍스트 필드가 Secure 로 설정되지 않은 경우 기본적으로 디바이스의 텍스트 필드에 입력한 모든 입력을 기록한다.

  • Keystroke : 입력 키를 누르는 행위로, 키보드 또는 이와 유사한 입력 장치 키를 누르는 것
  1. 키보드 입력

  1. 파일 조회
  • /var/mobile/Library/Keyboard/en-dynamic.lm 경로에 dat 파일 (dynamic-lexicon.dat) 로 저장된다.

  • 온전하게 파일을 열람할 수는 없었지만, 이전에 키보드로 입력했던 문자들의 흔적이 남아있다.

대응 방안

  • 텍스트 필드를 Secure로 설정하한다.
  • autocorrect (자동고침) 옵션을 해제한다.

Cookies

: 일부 애플리케이션은 Persistance Cookies (영구적, 지속적 쿠키) 를 생성해 cookie.binarycookies 파일에 저장하는데 이는 앱을 종료한 후에도 남아있다.

  1. 앱 실행 시 쿠키 파일이 생성됨

  2. 쿠키 파일 확인

  • /var/mobile/Containers/Data/Application/$uuid/Library/Cookies 경로에 Cookies.binarycookies 로 저장된다.

  • username : admin123 , password : dvpassword 저장되어있다.

(2-2 BinaryCookieReader 로 쿠키 파일 확인)


대응 방안

  • 쿠키에 중요한 데이터 (계정정보 등) 를 저장하지 않고, 서버에서 세션 값을 받아와 인증하도록 설정한다.
  • 계정정보를 저장하여 사용해야할 경우 안전한 암호화 알고리즘을 이용하여 데이터를 암호화한다.

출처
https://takudaddy.tistory.com/603
https://hagsig.tistory.com/164

profile
IT 보안, 관심 있는 것을 공부합니다.

0개의 댓글

관련 채용 정보