Fascination
article thumbnail
[Dreamhack] 현대 암호
Hacking Tech/Crypto 2023. 2. 10. 15:10

[Dreamhack] 현대 암호 # 서론 대칭키 암호 시스템(Symmetric Key Cryptosystem): 송신자와 수신자가 같은 키를 공유해야하는 암호 시스템 ex) 카이사르 암호, 비제네르 암호 같은 키를 갖고 있어야 하는 특성상, 대칭키 암호 시스템은 사전에 서로 키를 공유하는 과정이 반드시 필요하다. 키 공유 알고리즘(Key-sharing Algorithm): 외부인이 키가 공유되는 과정을 도청해도, 공유되는 키는 알지 못하게 하는 방법 현대에 많은 데이터가 오가는 네트워크는 도청에 취약하므로 키를 평문으로 공유하기에 부적절하기에 시작된 연구이다. Diffie와 Hellman이 Diffie-Hellman 키 교환 알고리즘 제시 송신자와 수신자가 서로 다른 키를 사용하는 공개키 암호 시스템의 ..

article thumbnail
[Dreamhack] 고전 암호
Hacking Tech/Crypto 2022. 12. 26. 23:21

[Dreamhack] 고전 암호 # 서론 고전 암호: 컴퓨터와 같이 고성능 연산 장치가 발명되기 전에, 비교적 간단하게 기계와 손 등으로 암복호화를 수행하던 암호를 말한다. 대부분 컴퓨터를 사용하면 쉽게 복호화되기 때문에 현대에는 사용되지 않는다. 고전 암호의 분류 # 단일 문자 치환 암호 단일 문자 치환 암호(Monoalphabetic Substitution): 평문의 각 문자를 약속된 다른 문자로 치환하는 암호이다. 복호화를 위해 치환의 대응 관계는 일대일 대응이다. 평문의 'A'가 암호문의 'B'로 치환된다면, 평문의 다른 어떤 문자도 'B'로 치환되지 않는다. 1. 카이사르 암호 카이사르 암호: 평문의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 치환한다. 이를 복호화할 때는 암호문의 각 ..

article thumbnail
[Dreamhack] Cryptography Introduction
Hacking Tech/Crypto 2022. 12. 24. 16:20

[Dreamhack] Cryptography Introduction # 암호학 좁은 의미에서 제 삼자로부터 정보를 보호하는 방법에 대한 연구이다. 핵심 연구 주제: 키 생성(Key Generation), 암호화(Encryption), 복호화(Decryption) 키 생성: 암호화 및 복호화에 사용할 키를 만드는 과정이다. 암호화: 키를 이용해 평문(Plaintext)을 암호문(Ciphertext)으로 변환하는 과정이다. 복호화: 송신자가 암호문을 전송하면 수신자는 키를 이용해 암호문을 평문으로 복호화한다. 암호 시스템(Cryptosystem): 암호화와 복호화로 정보가 전달되는 체계이다. 💡 암호화와 인코딩 인코딩(Encoding): 암호화와 유사하게 데이터를 다른 형태로 변환하는 것이다. 데이터의 기밀..

article thumbnail
[AFL fuzzer] AFL fuzzer 원리
Hacking Tech/Fuzzer 2022. 11. 8. 05:13

[AFL fuzzer] AFL fuzzer 원리 Ref. https://wogh8732.tistory.com/272 # AFL 퍼저 원리 afl 퍼저는 instrumentation-guided genetic algorithm과 결합한 퍼저 브루트포스로 입력을 받지만, 거기서 끝나는 것이 아닌 커버리지를 넓혀가며 프로그램 제어 흐름에 대한 변경사항을 기록하고, 이를 로깅하여 유니크한 크래시를 발견해 낼 수 있음 특징 커버리지 기반 퍼저이기 때문에 매우 효율적인 퍼징이 가능함 코드 커버리지 측정을 위한 코드를 컴파일 타임에 삽입함 QEMU를 이용해서 컴파일 타임이 아닌, 런타임 시에 코드 삽입도 가능함 코드: 어디가 실행됐고, 어디가 실행 안됐는지를 측정해주는 코드 코드 삽입: Instrumentation ..

[Fuzzer] What the Fuzz
Hacking Tech/Fuzzer 2022. 11. 8. 00:25

[Fuzzer] What the Fuzz Ref. https://labs.f-secure.com/blog/what-the-fuzz/ # 정의 fuzzing이란 자동화된 소프트웨어 테스팅 기술로써 프로그램 내부에 존재할 수 있는 취약점을 찾아내는 것 단순화된 fuzzing은 브루트포스와 마찬가지로 무작위로 입력 값을 보내는 방식으로 진행할 수 있음 but 발전된 fuzzing techniques 소스코드나 바이너리를 분석하여 입력 값을 생성 # 장점 자동화하여 버그를 찾을 수 있으므로 비용적으로 효율적임 수동 테스트는 분석자의 기술력에 굉장히 의존적 fuzzing을 사용하면 서로 다른 종류의 버그를 찾을 수 있음 + 분석자의 손을 벗어나도 계속해서 분석이 가능하기 때문에 효율적임 # 이슈 fuzzing은 ..

article thumbnail
[firmadyne/Firm-AFL] firmadyne & FirmAFL 사용을 위한 지식
Hacking Tech/Fuzzer 2022. 11. 7. 23:52

[firmadyne/Firm-AFL] firmadyne & FirmAFL 사용을 위한 지식 본격적으로 Firm-AFL을 사용해보기 전 이와 관련된 지식들을 정리해보고자 한다 1. firmadyne Linux 기반 임베디드 펌웨어의 에뮬레이션 및 동적 분석을 수행하기 위한 확장 가능한 자동화 시스템 구성요소 펌웨어 실행 계측을 위한 수정된 커널 하드웨어 NVRAM 주변기기를 에뮬레이트하기 위한 사용자 공간 다운로드된 펌웨어에서 파일 시스템 및 커널을 추출하는 extractor 디버깅을 위한 추가 셸을 생성하는 작은 console 42개 이상의 다른 공급업체에서 펌웨어를 다운로드하는 scraper firmadyne 시스템을 사용하여 다음 세 가지 기본 자동화 분석 가능 Accessible Webpages: ..

article thumbnail
[Firm-AFL] FirmAFL 환경 셋팅 및 오류 해결
Hacking Tech/Fuzzer 2022. 11. 5. 17:55

[Firm-AFL] FirmAFL 환경 셋팅 및 오류 해결 IoT 허브 펌웨어를 분석하던 중 Firm-AFL에 대해 알게되어 이와 관련한 환경 셋팅을 하는 과정을 기록해보려 한다 1. 환경 설치 환경은 Ubuntu 18.04이다 2. FirmAFL & firmadyne git clone 받기 github에 FirmAFL을 검색하게 되면 크게 3명의 repository가 나오는데 별이 가장 많은 사람을 기준으로 다운로드했다 GitHub - zyw-200/FirmAFL: FIRM-AFL is the first high-throughput greybox fuzzer for IoT firmware. FIRM-AFL is the first high-throughput greybox fuzzer for IoT fi..

article thumbnail
[Dreamhack] Background: PIE
Hacking Tech/System Hacking 2022. 9. 15. 01:09

Background: PIE # 들어가며 ASLR이 적용되면 바이너리가 실행될 때마다 스택, 힙, 공유 라이브러리 등이 무작위 주소에 매핑되므로, 공격자가 이 영역들을 공격에 활용하기 어려워짐 PIE: ASLR이 코드 영역에도 적용되게 해주는 기술 해당 기술은 보안성 향상을 위해 도입된 것이 아니기 때문에 엄밀하게 보호 기법은 아니나 이를 보호 기법이라고 소개하는 글이나 발표도 있음 Figure 1. PIE가 적용되지 않은 addr의 실행 결과 # PIC와 PIE - PIC 리눅스에서 ELF는 실행 파일(Executable)과 공유 오브젝트(Shared Object, SO)로 두 가지가 존재 실행 파일은 addr 바이너리처럼 일반적인 실행 파일이 해당하고, 공유 오브젝트는 libc.so와 같은 라이브러리..

article thumbnail
[Dreamhack] Background: RELRO
Hacking Tech/System Hacking 2022. 9. 14. 23:50

Background: RELRO # 서론 Lazy Binding: 함수가 처음 호출 될 때 함수의 주소를 구하고, 이를 GOT에 적는 것 Lazy Binding을 하는 바이너리는 실행 중에 GOT 테이블을 업데이트할 수 있어먀 하므로 GOT에 쓰기 권한이 부여됨 → 바이너리를 취약하게 만드는 원인 ELF의 데이터 세그먼트에는 프로세스의 초기화 및 종료와 관련된 .init_arrary, .fini_array가 있음 해당 영역들은 프로세스의 시작과 종료에 실행할 함수들의 주소를 저장하고 있음 여기에 공격자가 임의로 값을 쓸 수 있다면, 프로세스의 실행 흐름이 조작될 수 있음 이러한 문제를 해결하고자 프로세스의 데이터 세그먼트를 보호하는 RELocation Read-Only(RELRO)가 개발됨 RELRO는 ..

article thumbnail
[Dreamhack] Background: Library - Static Link vs. Dynamic Link
Hacking Tech/System Hacking 2022. 9. 7. 10:10

Background: Library - Static Link vs. Dynamic Link # 라이브러리 라이브러리는 컴퓨터 시스템에서, 프로그램들이 함수나, 변수를 공유해서 사용할 수 있게 함 대개의 프로그램은 서로 공통으로 사용하는 함수들이 많음 ex) printf, scanf, strlen, memcpy, malloc 등 많은 C 프로그래머들이 코드를 작성하면서 사용하는 함수 C언어를 비롯하여 많은 컴파일 언어들은 자주 사용되는 함수들의 정의를 묶어서 하나의 라이브러리 파일로 만들고, 이를 여러 프로그램이 공유해서 사용할 수 있도록 지원하고 있음 라이브러리를 사용하면 같은 함수를 반복적으로 정의해야하는 수고를 덜 수 있어 코드 개발의 효율이 높아짐 각 언어에서 범용적으로 많이 사용되는 함수들은 표준..