전체 글
Pointer
2016.09.14 : Languages & Frameworks/C C++추적포인터는②→①↖ 방향으로 이동하며 따라가면 편하다. 포인터는 주소, 0차, 1차, 2차, ...로 생각하면 편하다.주소 0차 1차 2차 &a a *a **a 122EF560 125F7458 1284EA43 71 포인터를 지원한다는 것은 어떤 변수에 대해 ``c &``연산을 통해 변수의 주소를 구할 수 있음을 의미한다.자바도 참조개념을 사용하지만 포인터를 지원하지 않는다고 하는 것은 이런 맥락에서다. 포인터 배열과 배열 포인터```cint *p[4]; // 포인터 배열. [주소, 주소, 주소, 주소]int (*p)[4]; // 배열 포인터. [크기 4인 배열의 주소를 담고있는 포인터]배열 포인터의 경우 접근할 때도 (*p)[i] 로 접근해야 한다.```포인터 배열은 포인터들의 배열이다. (이 때 배열 ..
객체 지향 패러다임
2016.09.12 : Coding Note/CodingKnowledge객체 지향객체지향 패러다임을 사용할 때, 개발 대상을 물리적 또는 추상적 대상에 비유하는 것이 도움이 된다.유즈케이스 다이어그램을 그린다거나, 시나리오를 분석하여 클래스를 추출하는 작업을 진행하는 등. 객체 지향의 장점캡슐화, Encapsulation크게 2가지로 나눠볼 수 있음. 로직+데이터 묶음 / 정보 은닉정보 은닉이란, public으로 공개할 API들만 공개하고, 실제 로직은 비공개로 처리하여 구현과 API를 깔끔히 분리.서로의 내부 구현에 연연하지 않기 때문에 의존성이 내려간다.추상화, Abstractionlayer 개념을 통해서 체계적으로 구조화 할 수 있음. (절차지향도 추상화가 가능은 한데... 캡슐화/상속과 맞물려서 추상화가 더 용이하지 객체지향에서는....)상속, Inheritance실..
Birthday Problem & Attack
2016.09.10 : Security/Cryptn명의 사람이 있을 때 생일이 같은 사람이 둘 이상 있을 확률이 p(n)이면,이를 적어도 1명도 겹치지 않을 확률로 바꿀 수 있으므로 이고, 이다. p(n) = 0.5일 때 n은 22.xxx이므로 23명 이상일 때 p(n)은 50% 이상이 된다. Birthday Attack암호학적 해시 함수의 해시 충돌을 찾아내기 위해 몇 번의 시도가 필요한지를 알아내기 위한 방법이다. 실제 birthday attack에서는 가짓수가 365가 아닌 ``c 2^24`` 등 매우 큰 수인데, factorial ( 계승 ) 을 사용하면 계산이 어렵다.따라서 적당히 approximation시켜 사용한다. : 총 가짓수 ( 365일 ) : 시도 횟수 ( 사람 수 ) 일 때, 라는 간단한 식이 나온다. factorial 근사는 스..
Wireless ( IEEE 802.11 )
2016.09.10 : Network & Protocol & InfraWEP, WPA, WPA2-TKIP 까지는 크랙 가능.WPA2-AES의 경우 dictionary attack이나 brute force를 사용해야 한다. WEP정적키를 사용하는 RC4기반 스트림 암호화. IV는 24bit, 키는 40bit | 104bit이다.단순히 키 앞에 IV를 붙이는 방식으로 64bit | 128bit Seed를 만든 후 이를 RC4에 집어넣고 keystream을 생성한다. keystream과 평문을 XOR해서 암호문을 만든다.ICV는 4byte CRC-32.IV/KeyID는 IV가 3byte, KeyID가 1byte로 총 4byte.IV가 그대로 노출되며, 24bit IV는 birthday attack에 따르면 n = 5000이면 p > 0.5이다.RC4 WPA & WPA2WPA 표..
Firewall Architectures
2016.09.08 : Network & Protocol & InfraBastion Hostdef ) A bastion host is a system identified by the firewall administrator as a crtitical strong point in the network's security. Bastion Host는 이름처럼 어그로가 집중되는 곳으로 다른 서비스에 대한 위협을 감소시키는 목적으로 운용되는 system이다.여기저기서 중구난방으로 정의해놓았는데, 상기한 내용이 제일 일반적인 정의다. ( Marcus J. Ranum )아래 내용은 '보통 이래야 한다'고 적어놓은 내용들이다. 꼭 아래 내용을 모두 만족해야 bastion host인 것은 아니다.해당 컴퓨터에서 보통 proxy같은 single application만 hosting한다.노출..
Prefetch, Superfetch
2016.09.07 : Security/ForensicPrefetch프리패치(Prefetch)는 윈도우 XP 이후 운영체제에서 제공하는 메모리 관리 정책으로, 실행파일을 메모리로 로딩할 때의 효율을 최대한 끌어올리기 위한 목적으로 개발되었다. 실행 파일이 사용하는 시스템 자원을 프리패치 파일(.pf)에 저장해 두었다가, 부팅 시에 프리패치를 모두 메모리에 로드하는 방식이다. (실제 사용할 때에는 메모리 매핑 해주는 방식) 프리패치 파일에 저장되는 정보 중 분석에 유용한 목록은 아래와 같다. 실행 파일 이름실행 파일의 실행 횟수실행 파일의 마지막 실행 시간프리패치 파일의 생성 시간(파일 최초 실행 시간)실행된 볼륨의 정보실행파일 실행 시 참조하는 파일의 목록 하지만 프리패치의 사용은 메모리의 페이징 아웃 기법(오래 사용되지 않는 메모리 영역을 잠시 보조저장장..
OpenSSL Heartbleed
2016.09.07 : Network & Protocol & Infra/Network AttackTLS는 확장 프로토콜로 Heartbeat를 사용한다. ( RFC 6520 )Heartbeat는 Client와 Server가 connection이 제대로 유지되고 있는지 확인하기 위해 사용한다. Client는 Heartbeat를 이용하여 임의의 값을 그 길이와 함께 Server에 전송,Server는 받은 임의의 값을 Client에게 돌려보내는 과정으로 이루어진다. 임의의 값과 그 값의 길이 정보가 일치하지 않는다면 응답하지 않는 것이 정상이나, Heartbleed 취약점은 Server가 이것이 일치하는지 검증하지 않고 응답하면서 발생하는 취약점이다.Client가 "Hi!", 30Byte라고 보내면 Server는 "Hi!:?aw^er?435ˇs........awe23.4.rw234", 30Byte와 같이 ..
Windows 악성코드 감염시 처리 프로세스
2016.09.07 : Security/Forensic초기 분석프로세스 확인네트워크 패킷 확인system32 확인host파일 변조 확인레지스트리 확인 주로 HKLM & HKCU\Software\Microsoft\Windows\CurrentVersion\Run.*Temp 폴더 확인 - 보통 다른이름으로 복사해 실행된다. 이후 여러 툴을 이용해 상세 분석하고, 악성코드 식별 시 리버싱. svchost`` svchost.exe``는 프로세스 하나 당 서비스 하나를 실행시키는 프로세스로, 반드시 `` winlogin.exe - services.exe``의 자식 프로세스로 존재해야 한다.단독으로 존재하거나, 실행 레벨이 `` services.exe``와 동급이라면 악성코드일 가능성이 크다.windows 7으로 넘어오면, `` wininit.exe - services..
USB 사용 기록 조사
2016.09.06 : Security/Forensic```bashEvent viewer -> system32 log (%SystemRoot%\inf\Setupapi.dev.log) -> registry```순으로 확인한다.이벤트 뷰어랑 log는 기록이 누락되어 있는 경우가 잦다.레지스트리를 직접 보려면 레지스트리 분석 도구를 이용해야 하기 때문에 어차피 도구를 이용할 거라면USBDeview를 이용해서 보는 편이 낫다. USB Device Tracking Artifacts on Windows 7, 8(RP) Artifacts Path Vendor & Product Name, Version HKLM\SYSTEM\ControlSet00#\Enum\USBSTOR\Disk&Ven_{Vendor Name}&Prod_{Product Name}&Rev_{Version}..
Tools - Forensic
2016.09.05이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
15'' whitehat contest, (= 16'' UXG)
2016.09.04 : Security/CTFhwp 파일이 삽입된 pct파일(mac 이미지 확장자)을 읽을 때, imsReadChar 함수를 사용하게 되는데, 이 때 size검사를 하지 않아 BOF 취약점이 존재한다. isgdi32.dll 로드 -> impct9.flt ( parser ) 로드 -> isgdi32.dll의 imsReadChar함수 호출 하는 식으로 동작한다. 1차 BOF는 정상적인 hwp.exe module에서 imsReadChar를 호출하는 과정에서 발생하는데, 이 때 1Byte를 size로 읽어와서 전달하기 때문에 256Byte 이상 쓸 수 없다. 그래서 1차, 2차로 나눠서 code를 삽입했다.injection된 code의 동작은 이렇다.일단 RTL해서 VirtualAllocEx를 호출한 후, RETN하며 injection c..
DLL, DLL mapping과 API 주소 결정 방식
2016.09.03 : OS/WindowsDLL, Dynamic Link LibraryDLL은 자신을 필요로 하는 프로그램이 실행될 때, 프로그램과 별도로 최초 한 번만 physical memory에 loading된 후 프로세스에 mapping 되는 방식으로 사용된다.OS는 dll별로 usage count를 유지하고 있으며 usage count가 0이 되면 이 dll을 참조하는 프로세스가 없다는 의미이므로 dll을 메모리에서 unloading한다. * 프로세스에서 DLL에 접근할 때는 VA를 사용하기 때문에, 같은 physical address를 참조하더라도 pointer 주소는 다 다르게 나온다. (Image base 대로 mapping 됐다면 같을 수도 있지만.) e.g.*nix에서 PLT, GOT를 사용하는 것 처럼, mapping(imp..