728x90

이전에 헥스 덤프가 무엇인지 잘 몰라 검색하다 보니

 

해커 스쿨이란 사이트를 찾은 적이 있다.

 

보안 분야로 제대로 배우지 않다 보니

 

국내 어떤 커뮤니티가 있는지는 잘 모르겠지만 상당히 큰편인것 같더라

 

 

 

특히 컴퓨터를 처음 배우는 사람들에게

 

제공되는 만화는 정말 좋더라

 

유치원-초등학교-중-고-대-연구소 순으로 되어있는데

 

만화는 중,고 까지밖에 없지만

 

컴퓨터를 처음 공부하는 사람들에게는 재미있게 보는데는 좋을 듯 하더라

 

https://www.hackerschool.org/Sub_Html/HS_Community/index.html

해커스쿨 커뮤니티 주소

 

 

 

 

이와 별개로

 

멍멍님이 하드웨어 해킹 강의 자료 모음을 올려놓으신게 있더라

 

RF 해킹, 스마트폰 해킹, 자동차 해킹, 하드웨어 해킹

 

되게 재미있어 보이는건 많다

 

링크만 올려 놓겠다.

 

https://www.hackerschool.org/HardwareHacking/

 

 

개인 적으로 위 링크에 있는 자료중에

 

[0과 1로 이루어진 컴퓨터의 세계] 강의 자료가

 

컴퓨터에 대해서 베이스가 부족한 사람들에게 설명을 잘 해놓은것 같더라

 

개인적으로 이 자료와 맨 아래에 학습 로드맵을 한번 따라해보면 좋을것 같다.

 

 

 

나도 기회가 된다면 멍멍님의 자료를 한번 실습해보면 좋겠다.

 

300x250

'미분류' 카테고리의 다른 글

2020-07-27  (0) 2020.07.30
2020-07-26  (0) 2020.07.26
고유벡터와 고유값 feat. 수학은 즐거워  (0) 2020.07.26
2020-07-25  (0) 2020.07.26
영상이해를 위한 최적화 기법  (0) 2020.07.26
728x90

최적화든 영상이든, 선형대수를 볼때마다

 

항상 만나는 개념이 고유벡터와 고유값이 있다.

 

 

 

 

분명 이 개념의 공식은 알고 있지만

 

이게 무엇을 의미하는지는 너무 막연하더라

 

이전에도 살펴본 적이 있었는데

 

그냥 보고 말아서인지 또 잊어버렸다.

 

 

 

 

 

 

그래서 잠시 검색해보다가 찾은 내용이

 

수학은 즐거와 math is fun 사이트에서

 

고유벡터와 고유 값에 대해서 정리한 내용이 있길래 가져와 봤다.

 

https://www.mathsisfun.com/algebra/eigenvalue.html

 

 

 

 

고유벡터 예시

 

고유벡터와 고유값은 많이 사용되기는 하는데 가장 간단한 예로

 

다음의 변환을 보면 고유 벡터는 방향이 바뀌지 않는걸 볼수 있다.

 

 

 

 

고유치와 고유벡터 정의

 

 A라는 제곱 행렬이 주어질때 고유 벡터와 고유 값은 다음의 식을 따르는 값이라 할수 있다.

 

 

이걸 왜 구할까?

 

 이 개념은 컴퓨터 그래픽에서 많이 사용되는데

 

고유 벡터는  행렬을 변환해도 바뀌지 않는 방향을 가리킵니다.

 

고유 값이 아래에 해당하는 경우 각각의 특징을 갖는다.

 - 1 일때 : 변화 없음

 - 2 일때 : 길이가 2배

 - -1 일떄 : 고유 값 방향으로 반대가 된다.

 

 

 

고유 eigen란?

 

eigen은 독일어로 고유의 own, 특징의 typical이란 뜻을 가지고 있습니다.

 

그래서 영어 단어로 말하자면 특성 characteristic이 되며, 고유 벡터를

 

특성 벡터 charateristic vector라고도 부를수 있겠습니다.

 

 

 

https://medium.com/sho-jp/linear-algebra-part-6-eigenvalues-and-eigenvectors-35365dc4365a

 

 

 

300x250

'미분류' 카테고리의 다른 글

2020-07-26  (0) 2020.07.26
해킹 관련 커뮤니티 및 자료  (0) 2020.07.26
2020-07-25  (0) 2020.07.26
영상이해를 위한 최적화 기법  (0) 2020.07.26
2020-07-22  (0) 2020.07.25
728x90

2020-07-25

  • 지난 시간까지 IoT 분야에서 보안 관련 시나리오와 취약점 그리고 도구들로 실습을 해보았고, 최적화 알고리즘을 다루기 위한 일변수, 다변수, 컨벡스 등의 다양한 개념들을 살펴보았습니다. 오늘, 내일 중으로 기본적인 최적화 알고리즘에 대해서 간단하게 학습을 진행하고자 합니다.
  • 우선 최적화란 특정 데이터가 주어질 때 원하는 값을 최적으로 구하기 위한 과정이라고 할수 있어습니다. 여기서 이런 최적의 결과를 얻기 위해 사용되는 함수를 목적 함수 혹은 비용함수라 불렀으며, 최적의 독립변수 x를 구하는 과정으로 지역 최소자 혹은 전역 최소자를 구하게 됩니다. 하지만 이 목적 함수로 구한 최소자가 전역인지 최적인지 알기 힘든 문제점이 있었습니다.
  • 간단히 최적화가 무엇인지에 대해 알아보고 하강 방향에 대해 다루어 보았습니다. 하강 방향이란 다변수 함수에서 경사를 따라 내려가는 방향이라 할 수 있으며 보폭 크기 alpha만큼 하강 방향에 따라 내려가게 됩니다. 하강 방향을 따라 충분히 내려가다 보면 최대 반복 횟수에 도달하거나 이전과 현재의 오차가 설정한 기준에 도달하였는지 등 종료 조건에 따라 최적화 수행 과정이 종료되는 과정을 이해할 수 있었습니다.
  • 경사 하강 방법은 이러한 하강 방향을 따라 함수 f에서 꾸준히 내려가 최소자 x를 찾는 최적화 방법이라 할수 있었습니다. 여기서 다음 위치 지점은 현재 위치 지점에 비용 함수를 최소로 만드는 값과 함수 f의 그라디언트 벡터의 곲을 뺀 것으로 다음 위치를 구하고, 이 위치에 대한 비용 함수 최소자와 그라디언트 벡터 곱의 연산을 수 차례 반복함으로서 최소 지점을 구하는 방법임을 살펴보았습니다.
  • 다음으로 경사 하강법에서 보폭 크기 alpha를 결정하는 직선 탐색 알고리즘을 학습하였습니다. 하강 방향 벡터 h에 따라 하강하더라도 보폭 크기에 따라 다양한 함수 f의 결과값을 구할 수 있으나 이 직선 탐색 알고리즘을 통해 가장 아래로 내려가는 보폭 크기 alpha를 구할수 있게 됩니다. 직선 탐색 알고리즘에서 이전의 경사 하강 방법을 구하는 과정에서 더 나아가 비용 함수를 alpha에 대한 식으로 정리한 후에 이를 곡선의 방정식으로 구하면 alpha의 최소 지점을 얻을수 있게 됩니다. 이 최소 alpha가 함수 f를 가장 아래로 내려가는 보폭 크기가 되어 기본 경사 하강방법을 사용한 경우보다 더 빠르게 최소자로 내려갈수 있었으며 이 과정을 예제를 통해 정리하였습니다.
  • 마지막으로 켤래 경사 방법에 대해서 살펴보았습니다. 이전의 경사 하강, 직선 탐색 방법에서 예제를 풀어본 것 까지는 달리 지금은 최적화 전반에 대해 간단히 살펴보는것을 목표로 하는 만큼 경사 하강 방법과 차이점을 살펴보았습니다. 경사 하강 법을 사용하는 경우, 레벨 집합에서는 법선 벡터와 그라디언트 벡터가 수직인 만큼 지그재그의 형태로 최소점에 수렴한다면, 켤래 경사 방법의 경우 경사 하강 방법과는 달리 타원의 형태로 부드럽게 최소점으로 수렴하는 특징을 가지고 있었습니다.
  • 오늘은 최적화 알고리즘에 필요한 기본적인 개념과 하강 방향, 경사 하강, 직선 탐색 등 기초적인 최적화 알고리즘들을 살펴보았습니다. 오늘 과정을 통해 이전에 그동안 학습한 일변수 함수, 다변수 함수, 선형 대수 관련 개념들이 어떻게 조합하여 최적의 값을 구하는 과정에 사용되는지 이해할수 있었습니다. 다음 시간에는 뉴턴 방법과 라그랑주 승수법을 이용한 최적화 방법까지 처음 최적화를 다루는 만큼 다 외우려고 억지로 노력하기 보다는 간단하게 살펴보면서 최적화 이론을 마무리할 예정입니다.
300x250

'미분류' 카테고리의 다른 글

해킹 관련 커뮤니티 및 자료  (0) 2020.07.26
고유벡터와 고유값 feat. 수학은 즐거워  (0) 2020.07.26
영상이해를 위한 최적화 기법  (0) 2020.07.26
2020-07-22  (0) 2020.07.25
2020-07-21  (0) 2020.07.22
728x90

https://www.edwith.org/optimization2017

 

 

나중에 시간날때 봐야지

300x250

'미분류' 카테고리의 다른 글

고유벡터와 고유값 feat. 수학은 즐거워  (0) 2020.07.26
2020-07-25  (0) 2020.07.26
2020-07-22  (0) 2020.07.25
2020-07-21  (0) 2020.07.22
2020-07-20  (0) 2020.07.21
728x90

태일러 급수를 이용해 2차까지 정리하면

 

L(h)를 최소화 하는 h가 뉴턴 방법의 해

 

뉴턴 방법 정리

- 아래의 이차 함수에서 A가 양 확정 행렬이면 반복 1회만에 최저점에 도달

 * 양 확정 행렬 positive definite matrix은 역행렬이 존재

 

 

뉴턴 방법으로 최저점 찾기

 

 

경사하강 방법과 뉴턴 방법의 차이

- 경사 하강 방법에서 여러번 반복이 수행됨

- 뉴턴 방법에는 1번만에 최소자에 도착

* 뉴턴 방법은 시작 점에 따라서 잘 수렴되지 않을 수 있음.

300x250
728x90

테일러 전개에를 통한 함수 근사화 정리

- 이차 형태(이차 함수)를 반복하여 최소자를 구함

 

2차 형태 정리

- 집합 S^n은 n x n의 대칭 행렬, f가 컨벡스 함수려면 A는 양 확정행렬이면 됨.

 

- 최소자는?

 

 

경사 하강 방법 gradient descent과 켤래 경사 방법 conjugate gradient의 차이

 

300x250
728x90

직선 탐색 알고리즘 line search algorithm

- 하강 방향 벡터 h를 구한 뒤, 하강 뱡향으로 얼마나 이동할지 보폭 크기 step size(alpha)를 결정하는 알고리즘

 

직선 탐색 알고리즘 예시

- 다음의 식과 초기값이 주어질 때

 

- 보폭 alpha에 대한 식 구하기

 

- alpha에 대한 그래프

 

 

- alpha = 0.5일때, x1 구하기

 

- x2에 대한 alpha 구하기

- x2 구하는데 필요한 alpha에 대한 그래프

- alpha = 1/10 일때, x2

 

=> 정리

 

 

직선 탐색 line search의 종류

1. 정확 직선 탐색 exact line search

 - 위 예시 처럼 x + alpha h에서 f(x)의 최소자 계산

2. 완만 직선 탐색 sort line search

 - f(x + alpha h) < f(x)를 만족하는 적당한 alpha를 선택하는 방법

 

 

300x250
728x90

1. 하강 방향

- 경사에 따라 내려가기 위해서 다음을 만족하는 값을 찾아야 함

- alpha가 충분히 작다면 아래와 같이 근사시킬수 있으며 여기서 h는 하강 방향 descent direction

- alpha는 보폭 크기 step size

 

 

2. 종료 조건 stopping criteria

- 반복 과정을 종료하기 위해서 다음의 종료 조건 중 선택하여 종료

 

3. 경사 하강 방법 gradient descent method

- 미분 가능한 함수 f가 초기값 x0에서 최소자 x*를 찾는 과정

 

- 정리

 

4. 경사 하강 예제

 

 

 

 

 

 

300x250
728x90

2020-07-22

  • 지난 시간에는 최적화 이론에 사용되는 벡터 함수의 다양한 미분들에 대해서 간단히 정리하고, 오픈소스 하드웨어 플랫폼을 이용한 AI 스피커를 살펴보면서 IoT 장비들의 펌웨어 구조와 인터페이스 등을 살펴보았습니다. 이 과정에서 장치들의 스팩과 사용 방법들을 알 수 있는 데이터 시트를 찾는 방법과 보는 방법에 대해서 배우고, 소스 코드나 통신 그리고 서비스 등에서 보안 취약점을 찾을수 있는 다양한 취약점 진단 도구들을 살펴보았습니다. 이번 시간에는 최적화 알고리즘들을 본격적으로 학습하기에 앞서 레벨 집합과 컨벡스 함수, 어떤 최적화 알고리즘들이 있는지 간단하게 살펴보고 통신 프로토콜과 취약점 실습 등으로 보안 학습을 마무리 하겠습니다.
  • 우선 최적화에 대해서 학습하면서 그 동안 다변수 함수들을 이용하면서 이변수 함수인 경우 평면, 삼변수 함수인 경우 공간에 대한 결과가 나오게 되었습니다. 삼변수 함수인 경우 z축에 대해 특정 값에 해당하는 (x, y) 집합들이 존재하게 되는데 이를 등고선(레벨)이라 하게되며, 여러 z축 값에 대한 등고선들의 집합을 레벨 집합이라 부릅니다. 이 레벨집합(등고선 모임)에서 가장 기울기가 큰 방향으로 경사하강하여 적절한 최소지점을 찾게 된다고 합니다. 여기서 나오는 등고선에 속하는 직선 집합을 구하는 함수가 컨벡스 함수이고, 이러한 레벨 집합과 컨벡스 함수등이 최적화 알고리즘에 적용 됩니다. 다음 시간에는 경사 하강법, 직선 탐색, 뉴턴 방법 등 최적화 알고리즘을 제대로 학습할 예정입니다.
  • 최적화 이론을 잠깐 살펴보고, 취약점 분석에 사용되는 다양한 도구들을 사용해보았습니다. 첫 번째로 펌웨어 이미지를 추출하는 FMK로 실제 배포중인 공유기의 펌웨어로부터 실제 데이터를 추출하여 공유기 설정 페이지 등 내부 데이터들을 확인할 수 있었으며, 이 내부 데이터를 수정 후 다시 빌드함으로서 배포중인 펌웨어를 고쳐보았고, NMAP을 이용하여 특정 웹서비스가 동작하는 장치에서 어떤 포트들이 동작하는지 확인할 수 있었습니다. 이 외에도 Yasca를 이용하여 웹 해킹 실습을 위한 오픈소스인 Webgoat 소스의 취약점들을 분석하여 하드코딩된 비밀번호의 존재 여부 등 다양한 취약점 결과가 나온느것을 확인하였습니다.
  • 다양한 취약점 분석 도구를 사용해봄과 동시에 IoT에서 주로 사용되는 통신 방식인 WiFi, 지그비, 블루투스, RF 등의 통신 방식과 메시지 전송 프로토콜 MQTT를 살펴보면서, 이들의 특징과 취약점들을 살펴보았습니다.
  • 이 외에도 안드로이드 취약점 분석 과정에서 암호화 되지 않은 안드로이드 패키지 파일 apk에서 소스 레벨의 내용들을 둘러보거나, MQTT 리스너를 통해 온습도 센서의 값들을 안드로이드 상에서 확인할 수 있었습니다.
  • 마지막으로 사용자 정의 라디오 신호 SDF의 개념을 살펴보면서 대표적인 SDF 장비인 HackRF를 이용하여 리모컨으로 프로젝터 스크린의 올리고 내리는 신호를 스니핑하여, 리모컨을 동작시키지 않는 중간에도 HackRF를 통해 동일한 신호를 송신하여 프로젝터 스크린 제어 시연을 보면서 이번 IOT 보안 학습을 마무리 하였습니다.
300x250

'미분류' 카테고리의 다른 글

2020-07-25  (0) 2020.07.26
영상이해를 위한 최적화 기법  (0) 2020.07.26
2020-07-21  (0) 2020.07.22
2020-07-20  (0) 2020.07.21
2020-07-17  (0) 2020.07.19
728x90

1. 하드웨어

1.1 개발 보드 development board, evaluation kit(board)

- ATmega

- Arduino

- micro bit

- STM series

 

1.2 라즈베리 파이

- 5V micro usb로 전원, 2.5mA 전류

- GPIO 50mA 전류, HDMI 50mA 전류, 250mA 전류 소비

 

1.3 GPIO

- General Perpose Input/Oupu, GPIO

- 사용자 제어 가능한 디지털 신호 핀

 

1.4 센서

- GPIO 핀으로 센서를 연결하여 사용 가능

- 온습도, 동작, 무선, 적웨선, 블루투스, 모터 센서 등

 

 

 

 

 

 

 

2. IOT 취약점

2.1 HW

- 계정 취약점

- 취약한 API키

- 히스토리

- 로그

 

2.2 통신

- 보호되지 않는 통신

- 입력값 조작

- SSL 통신 취약점

 

2.3 센서

- 보호되지 않는 통신

- 입력값 조작

 

2.4 모바일

- APK 디컴파일

- 관리자 웹페이지

- 중요정보 노출

 

 

 

 

 

 

 

 

 

 

3. 펌웨어

3.1 펌웨어

- ROM에 저장된 하드웨어 제어 프로그램

 -> 하드웨어 초기화 목적

- 제어 회로를 하드웨어로만 만들기 힘듦으로 펌웨어 활용

 

 

3.2 펌웨어 구성

- 부트로더 : 부팅에 필요한 프로그램

- 커널 : 운영체제 커널

- 파일 시스템 : 펌웨어 소스 있는 공간

- 기타 : 데이터 저장 공간 등 기타 영역

 

3.3 펌웨어 쓰기

- 롬라이터로 ROM에 펌웨어 쓰기

- JTAG Joint Test Action Group

  : 펌웨어 업로드 및 디버깅 시 사용. 

  인터페이스 - TDI 데이터 입력, TDO 데이터 출력, TCK 클럭, TMS 모드, TRST 리셋

 

- UART Universial asynchronous receiver/transmitter

  : 병렬 데이터를 직렬로 변환하여 비동기 통신 수행하는 하드웨어. 

   RS-232, RS-422 통신 표준 방식과 같이 활용됨. 

   인터페이스 구성 - Tx Transmit, Rx Receive, GND Ground, Vcc Voltage 

 

 

 

 

 

 

 

4. 분석 도구

- AttifyOS : 취약점 진단 도구들이 있는 운영체제

- Binwalk :펌웨어 바이너리 이미지에서 데이터, 파일 추출하여 분석하는 도구

- FMK Firmware Mod kit : 펌웨어 이미지 추출 및 리빌드 도구

- Nmap : 포트, 서비스, 취약점 스캐닝 및 점검 수행 도구

- Armitage : GUI 환경 취약점 진단 툴

- webgoat : 웹 해킹 연습 환경

- Yasca : 정적 코드 분석 도구로 보안 취약점, 코드 품질 등을 분석

 

 

 

 

 

 

 

 

 

5. 통신과 프로토콜

5.1 IoT 취약점

- Iot 시스템에서 장치와 게이트웨이 간 통신에서 RF, Zigbee, Wifi, 블루투스 등 이용

 -> 취약한 RF나 암호화 하지 않을 시 스니핑 가능

 

5.2 SDR software defined radio

- 소프트웨어로 하드웨어 설계하여 신호 송수신

 -> RF 신호 도청, 재전송, 재밍 등

- ex : Hack RF

 

5.3 MQTT Message Quee Telemetry Transport

- 경량화 Iot 프로토콜로 메세지 송수신 수행(스택 : MQTT < TCP< IP)

- 사용 예시 : RFID, POS, 교통 모니터링 등

- 장점 : 큰 오버헤드 없이 대량 데이터 전송, 최소한 패킷 사용

- 최약점 : 암호화 하지 않은 경우 내용 노출 및 변조 공격에 취약

 

5.4 Wifi

- 패킷 암호화와 인증 필요

- 무선 전송 구간만 암호화 한 경우 : Wifi 네트워크를 공격 가능

- 암호화 하지 않은 경우 : 신호를 재전송 하거나 변조, 내용 확인 등 가능

- Aircrak-ng : WEP와 WPA/WPA2 크랙 및 분석 도구가 통합된 네트워크 SW

 

5.5 Zigbee 지그비 통신

- 단순 프로토콜 스택 구성. 낮은 데이터 전송 속도 긴 베터리 수명 요구시 사용

300x250

+ Recent posts