전체 글 19

중요정보 키보드 캐시

OWASP MASVS에서도 주의를 요하는 취약점인 '중요정보 키보드 캐시 저장'에 관한 이슈입니다. 깔끔하게 정리하자면 '키보드 복사/붙여넣기로 중요정보가 유출될 수 있다' 라는 것입니다. ? 클립보드를 이용해 정보를 복사하여 붙여넣기를 하는 과정은 다음과 같습니다. 1. 정보를 복사하면 해당 정보는 키보드 캐시 공간에 저장이 됩니다. 2. 저장된 정보를 붙여넣을 시 키보드 캐시에서 저장한 정보를 불러와 붙여넣기가 가능해지는 것입니다. 즉 클립보드와 같은 역할의 악성 코드가 스마트폰에 설치되어 있다면 중요정보가 줄줄 새나갈 수 있습니다. 사용되는 서비스가 스마트폰에 부착된 모든 클립보드를 제거할 순 없지만 적어도 본인 서비스에서의 정보만큼은 키보드 복사가 불가능하게 만들어줘야 안전하다고 말할 수 있을 것..

시큐어 코딩 2020.03.22

BurpSuite의 HTTPS/HTTP/Localhost 프록시 종합 설정

버프슈트(BurpSuit) 진단도구 설정을 해봤습니다. 웹 애플리케이션 취약점 진단 시 많이 사용하는 진단 도구이기에 익혀두면 좋습니다. 무료로 제공되는 기능들이 여럿 있으며 프록시 설정을 통해 포워드&드랍으로 패킷을 보내거나 드랍시킬 수있습니다. 또한 파라미터 값을 조작할 수 있으니 유용한 진단 도구입니다. 그러나 사용에 앞서 기본설정들이 필요합니다. * 버프슈트(BurpSuite)가 설치되어있다는 가정하게 진행하겠습니다. HTTPS/HTTP 프록시를 위한 인증서 설정 Options > Import/export CA certificate 를 선택합니다. Export 하위 체크옵션 3개중 Certificate in DER format > Next Select file ... 선택 > 저장할 위치를 선택 ..

내부저장소를 활용한 민감정보 저장

서비스의 운용을 위해 필요한 정보를 받는 것은 자연스러운 일입니다. 그중 대표적으로 비밀번호를 말할 수 있으며 그외 주체를 식별할 수 있는 정보들에 대해서 우리는 안전하게 처리해줘야할 필요가 있습니다. 민감정보들은 서버로 전송하여 데이터베이스에 암호화한 뒤 저장하는 것이 자연스럽다고 생각할 수 있습니다. 그러나 편의를 위해 혹은 다른 이유들로 인해 내부 저장소를 사용할 일이 있습니다. 이에 따라 Android에서는 정보의 간단한 저장 및 읽기를 SharedPreferences를 통해 제공합니다. SharedPreferences? Android에서 제공하는 XML방식의 기술방법입니다. XML 파일에 Write/Read를 통해 저장된 정보를 빠르게 읽고 쓸 수 있습니다. 스마트폰은 사용자가 접근할 수 있는 ..

시큐어 코딩 2020.03.13

JAVA 메모리 취약성 제거

JAVA 개발을 하다보면 String 객체를 이용하여 개인정보 관련 데이터를 넣어서 로직을 처리하는 경우가 있습니다. 그러나 이 경우 String 객체에 개인정보가 남아 있어 '메모리 덤프'를 이용해 개인정보가 유출 된다면? String? 자바의 String은 값을 주입하는 순간, 값에 대한 객체를 생성하여 참조하게 됩니다. 위의 사진 처럼 하나의 값에 대해 참조를 하게됩니다. 이때 바로 암호화를 이용하여 보호하면 된다고 생각한다. 암호화 수행 후 메모리 결과는 다음과 같습니다. 이렇게 Mypassword 데이터는 메모리에 남아 있으며, String 객체는 새로운 객체를 생성하여 암호화된 데이터를 참조하는 형태가 됩니다. 즉 메모리 덤프를 통해 개인정보 탈취가 가능하다는 것입니다. 우리는 본질적으로 메모..

시큐어 코딩 2020.03.11

Android 개발 시 보안을 위한 KeyStore

안드로이드 개발 시 보안의 이슈중 하나가 바로 '비밀 키'에 대한 보관 방법일 것입니다. 사실 서버, 격리된 별도의 공간에서 개인 키든, 대칭 키든 보관하는게 안전하겠으나 어떠한 사정에 의해 단말기에 저장하게 된다면 고민이 많아질 것입니다. 키 스토어 (KeyStore) 키 스토어는 컨테이너라는 공간속에 RSA키페어 및 AES대칭키를 저장하는 시스템을 의미합니다. 컨테이너는 외부에서 접근할 수 없는 형태이며 어플리케이션을 삭제하면 컨테이너의 데이터도 같이 삭제되므로 데이터 유출이 없게 됩니다. 이러한 컨테이너에 RSA키페어 및 AES대칭키를 저장하여, 저장된 키로 '비밀 키'를 암호화 하여 안전하게 보관할 수 있습니다. 또한, 해당 어플리케이션 내부 소스코드를 통해서만 접근이 가능하니 더욱 보안 강도가 ..

시큐어 코딩 2020.02.10

무선WiFi(OTA)를 이용한 IoT 인증서 업로드 및 통신

현재 무선 IoT 보안실험에 사용하고 있는 IoT 프로젝트의 Mqtt를 활용한 보안 셋팅을 위한 절차를 적고자합니다. 목표는 다음과 같습니다. 1. 브로커 겸 인증서 발급 서버에서 클라이언트 인증서 자동 갱신 및 단말기로의 자동 전송 진행 2. 전송된 인증서는 로드하여 브로커단말기 간 'MQTT기반 TLS/SSL' 통신 진행 3. TLS/SSL 통신중인 상태에서 특정 토픽으로 추후 사용할 대칭키를 각 단말기에 전송 *이때 각 단말기는 이미 인증서 로드 후, MQTT연결 진행과정에서 특정 토픽을 SUBSCRIBE 4. 브로커 겸 인증서 발급 서버가 다운될 시, 단말기들은 '재연결 실패횟수'를 통해 서버의 다운을 감지하게되며 이후 단말 간의 통신 진행 5. 단말 간 통신 진행 시 브로커 겸 인증서 발급 서버..

Mosquitto Broker를 이용한 MQTT 암호화 통신 방법 & OpenSSL 인증서 사용 방법

이전 게시글들에서는 CentOS 상에서 Mosquitto 셋업 방법과 OpenSSL 설치 방법을 알아봤습니다. 지금부터는 OpenSSL 인증서를 발급하며 암호화 통신을 위한 셋팅을 하겠습니다. openSSL 인증서 셋업 openssl genrsa -out ca.key 2048 openssl req -new -x509 -days 360 -key ca.key -out ca.crt ( Country Name : KR State or Province Name : CN Locality Name : Choana Organization Name : KongjuUniverSity Organization Unit Name : Comp Common Name : SONG 내 pc이름이 SONG이라면 인증서 발급 시에도 CO..

CentOS OpenSSL 설치

앞서 Mosquitto에 관한 셋업을 진행 하였으며 이제 암호화 통신을 위해서는 OpenSSL을 설치하며 통신 간 암호화를 위한 관련 인증서 파일을 추출해야합니다. OpenSSL 설치 1. OpenSSL 다운로드 wget wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz 2. OpenSSL 압축해제 tar xvfz openssl-1.1.0e.tar.gz 3. 파일 생성 진행 cd openssl-1.1.0e make make install (make install은 root 권한으로 진행 : sudo make install) 여기서 OpenSSL을 입력하면 가끔씩 다음과 같은 에러가 나옵니다. 구글링 서치 결과 다음의 명령어로 해결해봅니다. sudo c..

Cent OS에서 Mosquitto Broker 셋업

그동안 IoT와 관련 보안 논문을 리딩하며 관련 공부를 하던 중, IoT 보안 관련 박사 논문 실험에 개발담당으로 참여하게 되었습니다.. 그래서 실험을 위해 Cent OS에서의 Mosquitto를 셋팅해야 했습니다. Mosquitto는 MQTT 프로토콜에 사용되는 브로커 입니다. '중간자'이기 때문에 서버가 아니라 각 이해 관계 단말기들을 topic기반으로 정보를 연결해주는 중계자라고 생각하면 될듯합니다. MQTT는 기본적으로 구독자(Subscribe), 발행자(Publish), 중간자(Broker)가 존재합니다. 발행자(Pub)는 topic을 통해 정보를 발행하여 중간자(Broker)에 전달하고, 구독자(Sub)는 해당 topic을 통해 중간자(Broker)에서 데이터를 받을 수 있습니다. 여기서 중요..