일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- NTFS
- MFT
- igoat
- logstash
- Strings
- frida
- ESXi
- XSS
- SQL Injection
- 인시큐어뱅크
- elasticsearch
- base64
- 2018
- kibana
- ctf
- beebox
- Docker
- InsecureBank
- 안드로이드
- 파이썬
- otter
- diva
- vulnhub
- Volatility
- Reflected XSS
- lord of sql injection
- CTF-d
- Suninatas
- foremost
- Openstack
- Today
- Total
목록모바일 (84)
Information Security
Local Data Storage - 애플리케이션 실행이나 애플리케이션의 수명 동안 필수 정보를 유지하기 위해 필요한 기능이다. 위치 Credentials.sqlite 데이터베이스 영향 데이터베이스에 위험한 정보가 노출될 위험이 있다. 진단 Username 부분에 i2sec, Password 부분에 1234를 입력했다. 아무런 반응이 없어서 Username, Password를 다시 한번를다시한번 입력했다. Credentials.sqlite 데이터베이스 입력했던 내용이 저장되어 있는 것을 알 수 있다. 대응방안 중요 정보 저장 시 하드 코딩된 암호화를 한다.
CouchBase Storage - 데이터베이스 스키마의 제약 없이 쉽게 애플리케이션을 수정할 수 있다. 위치 CocuhBaseExerciseViewController 영향 데이터베이스에 저장되어 있는 정보가 노출될 수 있다. 진단 Name 부분에 i2sec, Age 부분에 27, Gender 부분에 male, Disease No를 입력했다. 그림 3-1처럼 입력한 결과 Failed 메시지를 보여준다. CocuhBaseExerciseViewController코드에서 데이터를 확인할 수 있다. Name은 Jane Roe, Age는 52, Gender은 Female, Disease은 Cancer 부분을 입력했는데 Success 메시지를 보여준다. 대응방안 중요정보 저장 시 하드 코딩된 암호화를 한다.
Core Data Storage - 주요한 데이터를 데이터베이스 내에 저장함으로써 발생하는 취약점 위치 BA73E8E9-9A22-4D3D-AB05-5E52E!D90A71/Documents/CoreData.sqlite 영향 데이터베이스에 저장되어 있는 정보가 노출될 수 있다. 진단 Username 부분에 i2sec Password 부분에 1234를 입력해 보았다. 그림 2-1처럼 입력한 결과 Failed 메시지를 보여준다. /var/mobile/Containers/Data/Application 위치에 데이터베이스 파일을 확인할 수 있다. 최근 변경된 파일을 확인하기 위해 find 명령어를 사용했다. Sqlite3로 데이터베이스 파일을 열어본 결과 John@test.com, coredbpassword를 확인..
Cookie Storage - 바이너리 쿠키 파일을 사용해 데이터를 저장하는 취약점 위치 BinaryCookiesExerciseViewController 영향 사용자가 입력한 값들이 Cookie에 저장되기 때문에 노출될 위험이 있다. 진단 Cookie Storage에 Naem, Session, Token 값을 입력했다. 그림 1-1에서 입력한 결과 그림 1-2처럼 Failed 메시지를 보여준다. BinaryCookiesExerciseViewController.m 소스코드를 확인한 결과 Name, Token, Session 값을 찾을 수 있다. 그림 1-3처럼 입력한 결과 Success!! 메시지를 보여준다. 대응방안 Cookie 파일을 주기적으로 삭제한다.
정의 - 시스템의 어떠한 인증 체계에 취약점이 존재하여 공격자가 시스템에 존재하는 사용자 계정 목록을 획득할 수 있는 취약점 영향 - 에러메시지를 통해 아이디/비밀번호를 유/무 판별할 수 있는 정보를 획득할 수 있다. 진단 시스템에 존재하지 않는 아이디와 비밀번호를 입력했다. 메시지를 출력하여 사용자 계정의 존재 유무를 알려준다. 시스템에 존재하는 아이디의 비밀번호를 잘못 입력했다. 비밀번호가 틀렸다는 사실을 메시지로 알려준다. 시스템에 존재하는 아이디와 정확한 비밀번호를 입력했다. 로그인에 성공했다는 메시지가 출력됬다. 대응방안 - 로그인 시도 속도를 제한하여 자동화 도구를 이용한 공격을 방지한다. 로그인 실패시 메시지는 상세한 피드백을 제공하지 않고 포괄적으로 대응한다. 실시간 모니터링을 통해 비정상..
정의 - 관리자의 패스워드나 중요 정보 또는 암호화키 등을 주석으러 처리하면 문제점이 발생할 수 있다. 발생 위치 - Changepassword.java, DoLogin.java 영향 - 인시큐어뱅크의 경우 하드코드된 사용자 계정과 암호화키를 노출한다. 진단 Find in Path에 jack@을 입력해 소스 코드에서 주석으로 처리되어 있는지 확인했다. “This is the super secret key123”이라는 중요한 AES 암호화 키가 노출된 것을 알수 있다. 대칭키 블록 암호 알고리즘으로 키값을 노출할 경우 복호화가 될 수 있다. 대응방안 - 키 값은 앱에 저장하지 않고 서버에 저장하여 보호한다. 개발 완료 후 주석처리에 주의를 기울여야한다. 암호화키의 경우, 솔트를 사용하여 암호화의 안전성을 ..
정의 - 요청하는 값을 중간에서 가로챈 후 매개 변수값을 변조하여 전송한다. 영향 - 사용자의 입력값을 확인하여 정보를 수정해 악용할 경우 개인 신상 유출이나 신용카드 도용등의 피해가 발생할 수 있다. 진단 계좌 번호와 입금 금액을 입력하고 전송하는 중간에서 버프슈트로 잡았다. 입금 금액을 123456에서 78901으로 변경해서 전송했다. ViewStatement 상에서 보이는 데이터는 변조되기 전의 데이터인 123456이라는 것을 알 수 있다. 대응방안 - 모든 입력값에 대한 유효성 검증을 서버에서 수행한다. 상태 정보나 민감한 데이터 특히 사용자의 세션정보와 같은 중요한 정보는 반드시 서버에서 검증한다.
정의 - 애플리케이션과 서버간 데이터 통신을 할 때 HTTP 통신을 사용한다. 영향 - 스니핑/스푸핑 공격을 이용하여 사용자들의 입력값을 패킷 정보에서 탈취할 수 있다. 진단 버프슈트를 이용해 인시큐어뱅크 로그인 과정을 중간에서 보았는데 username과 password과 평문으로 노출되는 것을 알 수 있다. 파라미터 값을 보면 username과 Password가 평문으로 노출되는 것을 확인할 수 있다. 보내는 사람과 받는 사람의 금액을 입력하고 계좌이체를 시도해 보았다. username, password 및 계좌 번호 입금 금액이 평문으로 노출되는 것을 알 수 있다. 대응방안 - 모든 입력값에 대한 유효성 검증을 서버에서 수행한다. 상태 정보나 민감한 데이터 특히 사용자의 세션정보와 같은 중요한 정보는..