APT 침투

2020. 7. 12. 20:10

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

반응형

* lass.exe : Local Security Authority Subsystem Services

 : 보안 정책 적용을 담당하고 있는 프로세스

 : 패스워드 변경, access tokens 생성, 사용자 인증 등을 담당

 : 악성코드가 자주 사용하는 이름 중 하나


* svchost.exe : Service host

 : 동적 라이브러리(DLL)에서 실행되는 윈도우의 각종 서비스를 제어

 : 윈도우 부팅 시 레지스트리의 서비스 부분을 검사

 : 로드해야 할 서비스의 대상, 위치, 시작되는 방법 파악

 : 부모 프로세스는 services.exe


* csrss.exe : Client Server Runtime process

 : smss.exe에 의해 로드 (부모 프로세스가 smss.exe)

 : 각각의 프로그램들이 win32 API를 호출할 때, 운영체제의 커널이 응답하도록 중계

 : 프로세스나 스레드의 생성 및 삭제

 : 윈도우 콘솔에서 명령 호출이 가능하도록 함


* smss.exe : Session Manager Subsystem

 : 커널 생성 이후 최초로 생성되는 세스템 프로세스

 : 윈도우에서 세션을 만들기 위한 환경을 구성

 : 부모 프로세스는 시스템 프로세스 (PID 4) / 자식 프로세스는 winlogon.exe


* services.exe : Service Control Manager

 : 서비스 콘솔안의 프로세스를 실행 시키거나 종료

 : 부팅 시 또는 사용자가 요구 시 각종 드라이버와 서비스 로드

 : 현재 실행중인 서비스와 드라이버 정보 및 상태 유지

 : 유지된 정보를 통해 다른 서비스와 사용자의 요구에 응답

 : 부모 프로세스는 winlogon.exe


* winlogon.exe 

 : 윈도우 로그온 화면에서 SAS 키 조합 담당

   - SAS (Secure Attention Sequence) : 로그인 화면을 보여주는 특별한 키 조합

 : 계정 아이디와 패스워드가 일치 하는지 여부 파악

 : 로그온이 이루어지면 사용자 프로필 및 환경 설정 로드

 : 화면 보호기가 작동 시 PC를 잠그는 일 담당

 : 자식 프로세스는 services.exe / 부모 프로세스는 smss.exe


* userinit.exe

 : 부팅 후 시작 버튼 및 트레이, 작업 표시줄 등을 로드

 : 윈도우 사용자 쉘인 explorer.exe 호출

 : 위의 작업이 끝나면 자동으로 바로 종료


반응형

'Hacking > Malware' 카테고리의 다른 글

악성코드 특징  (0) 2020.07.07
블로그 이미지

rootable

,
반응형

* 국내 사고 사례

 - 3.20 전산 대란 : 웹 엑티브 X 모듈을 통해 침입 / 엑티브 X 모듈 업데이트 기능을 이용해 업데이트가 파일 경로를 해커가 올려놓은 악성코드 파일 경로로 수정

 - 한수원 사건

 - 청호 이지캐쉬 ATM 서버 해킹 사건 : 북한 해커의 소행 / 백신 업데이트 서버의 취약점을 사용


* 금융 정보를 타깃으로 하는 공격자들이 수행하는 공격을 "Smash And Grab" 공격으로 분류


* 악성코드 평균 점유 시간 : 101일

 - 아메리카 지역 : 75.5일

 - 유럽/중동/아프리카 : 175일

 - 아시아/퍼시픽 지역 : 498일


* 파워쉘 : Windows 운영체제에서 기본적으로 제공하는 쉘 

 - 파워쉘 스크립트를 통해 운영체제의 각종 리소스 접근/조작이 가능

 - built-in 스크립트는 운영체제에 흔적이 잘 남지 않아 공격에 많이 사용됌.

 - Psexec 윈도우 관리용 프로그램을 이용한 공격도 많이 사용됌.


* 악성코드의 생존을 높이기 위한 속임수

 - Niddle in a haystack : 피싱 웹사이트를 통해 사용자를 속이는 방식 (ex)국민은행 피싱사이트

 - Rogue name : 

 - Process hiding (hooking and DKOM) : 악성 파일을 마치 작동하지 않은 것처럼 숨김 / 악성코드가 실행되어도 잡아내지 못함.

 - Does not create process (dll injection, code injection, process hollowing etc) : 프로세스를 강제로 로드시켜 다른 프로그램을 실행

반응형

'Hacking > Malware' 카테고리의 다른 글

윈도우 주요프로세스  (0) 2020.07.07
블로그 이미지

rootable

,
반응형

0. 개요

스크래핑을 위한 인증정보는 보통 단말기에 저장이 된다.

새로 조회를 할 때 단말기에 저장되어 있는 인증정보로 데이터를 불러와야하기 때문이다.


그런데 단말기에 만약 인증정보(ID/PW,공인인증서 비밀번호 등)가 평문으로 저장되어 있다면 단말기가 탈취되었을 때 이러한 인증정보가 노출될 가능성이 존재한다.


따라서 단말기에 저장한다 하더라도 이런 중요 정보들은 암호화된 상태로 저장해야 한다.



1. 인증정보 암호화 상태로 저장

인증정보를 암호화된 상태로 저장하였을 때를 생각해보면 2가지 포커스가 있다.

(1) 어떻게 암호화, 복호화를 할 것인가?

(2) 키 관리는 어떻게 할 것인가?


만약 암호화, 복호화를 앱에서 자체적으로 진행할 경우에는 앱 분석을 통해 암복호화 로직을 찾아 평문으로 획득할 가능성이 존재한다.

하지만 키 값이 앱 소스코드에 존재하지 않고 서버에서 관리를 한다면 말이 달라진다.

암/복호화 로직을 찾았다 하더라도 키값을 모르기 때문에 복호화가 불가능하다.


그렇다면 서버에서 관리하는 키 값으로 인증정보를 어떻게 암/복호화 할 것인가?

이것은 Step 별로 작성해보겠다.


Step 1. 사용자가 스크래핑을 위해 인증정보를 입력

Step 2. 서버에서 key 값을 받아 앱에서 암호화 진행

Step 3. 암호화된 인증정보를 단말기에 저장


이렇게 진행하면 안전할 것 같지만 몇가지 보안적으로 위험한 부분이 있다.

① 서버에서 key 값을 전달받을 때 key 값이 평문으로 노출될 가능성이 존재한다.

② 앱에서 key 값을 통해 암호화하였기 때문에 메모리 상에 key 값이 노출될 가능성이 존재한다.


이 두가지 위험으로부터 안전하기 위해서는 어떤 방법이 있을까?



2. 세션 데이터 이용

우선 첫번째 위험으로부터 안전하기 위해서는 세션 데이터를 이용하면 될 것이라 생각한다.


세션 데이터를 이용할 경우 패킷이 노출된다 하더라도 세션 내 데이터가 직접적으로 노출되지 않기 때문에 Key가 안전할 것이며, 각 사용자별로 Key를 달리 적용할 경우 더욱 안전성이 높아질 것으로 예상된다.


두번째 위험으로부터 안전하기 위해서는 Key를 통해 암/복호화 진행 후 Key를 저장한 변수를 null로 초기화하여 메모리 상에 키 값이 노출되지 않도록 하면 된다.



3. 이외 정보들

각 OS 별로 중요 정보를 저장하기 위한 것이 존재한다.

중요 데이터를 저장할 때에는 아래에서 말하는 장소에 저장하는 것이 보안상 좋다.


(1) Android

 : 안드로이드의 경우 Keystore 시스템이 존재한다. 이 시스템은 암호화 키를 저장하는 시스템으로 이 시스템에 키를 저장하게 될 경우 컨테이너에 저장하여 키를 암호화 작업에 사용할 수는 있지만 내보낼 수 없는 상태이므로 보안상 유리하다.

 : 상세한 정보는 아래 링크를 참고하길 바란다.

 https://developer.android.com/training/articles/keystore


(2) IOS

 : IOS의 경우 Keychain Service가 존재한다. 해당 서비스는 앱에서 사용하는 사용자의 정보를 안전하게 저장할 수 있도록 도와주는 암호화된 데이터베이스이다.

 : 해당 서비스를 이용할 경우 탈옥된 단말기에서는 특정 툴을 통해 복호화가 가능하므로 Keychain에 저장하는 데이터 또한 위에서 말한대로 암호화하여 저장해야 한다.

 : 상세한 정보는 아래 링크를 참고하길 바란다.

https://developer.apple.com/documentation/security/keychain_services



반응형

'Hacking > Mobile' 카테고리의 다른 글

안드로이드 잠금패턴 확인  (0) 2020.07.02
앱 무결성 검증 우회 방지  (0) 2020.06.11
CCCrypt hooking code  (0) 2020.05.29
IOS hooking code  (0) 2020.05.29
Fridalab Writeup  (0) 2020.03.30
블로그 이미지

rootable

,
반응형

안드로이드에 패턴으로 잠겨있는데 기억이 나지 않는다던가, 포렌식을 진행해야하는데 패턴으로 막혀있다면 다음과 같이 패턴을 확인하거나 제거할 수 있다.


아래 방법대로 진행하기 위해서는 2가지 전제 조건이 있다.

1. 루팅된 단말기여야 한다는 점

2. 개발자 옵션의 USB 디버깅이 설정되어 있어야 한다는 점


때문에 만약 자신이 사용하는 단말기의 패턴이 기억나지 않아 패턴을 해제하거나 찾고 싶은 경우에는 다른 글을 참고하시길 바란다.


루팅이 무엇인지 간단하게 설명하자면 다음과 같다.

루팅(영어: rooting)은 모바일 기기에서 구동되는 안드로이드 운영 체제 상에서 최상위 권한(루트 권한)을 얻음으로 해당 기기의 생산자 또는 판매자 측에서 걸어 놓은 제약을 해제하는 행위를 가리키는 말이다.

- 위키백과


구글링을 하다보면 루팅하는 방법이 많이 나와있으므로 여기서는 Skip 하도록 하겠다.

다시 본론으로 넘어와서 패턴을 확인하는 방법부터 이야기해보겠다.


아래와 같이 핸드폰이 잠겨있으며 패턴이 기억나지 않거나 모르는 상태라고 가정한다.


1. 단말기의 adb 명령어를 이용하여 단말기의 Shell에 붙는다.


2. /data/system 디렉토리 내 gesture.key 파일을 PC로 복사한다.

 - 여기서 복사하는 방법은 PC에서 접근 가능한 디렉토리로 복사하여 빼내는 방법도 있고 adb pull 명령어를 통해 빼내는 방법도 있다.

 - adb pull 명령어 : PC의 커맨드 창에서 [ adb pull /data/system/gesture.key ]를 입력하면 현재 디렉토리로 해당 파일을 가져온다.


3. 툴을 이용하여 패턴을 확인한다.

 - 사용한 툴은 androidpatternlock 이라는 툴이다. 툴 실행 결과를 보면 숫자로도 알려주고 친절하게 그림으로도 알려준다.

 - 다운로드 경로 : https://github.com/sch3m4/androidpatternlock


4. 패턴을 지우거나 패스워드를 지우고 싶을 때는 단말기 shell에 접근한 뒤 다음 명령어를 입력해주면 된다.

 - 패턴 삭제 : rm -f /data/system/gesture.key

 - 패스워드 삭제 : rm -f /data/system/password.key




반응형

'Hacking > Mobile' 카테고리의 다른 글

스크래핑 인증정보 단말기 저장  (0) 2020.07.03
앱 무결성 검증 우회 방지  (0) 2020.06.11
CCCrypt hooking code  (0) 2020.05.29
IOS hooking code  (0) 2020.05.29
Fridalab Writeup  (0) 2020.03.30
블로그 이미지

rootable

,

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

CCCrypt hooking code

2020. 5. 29. 13:20

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.