전체 글
OpenSSL Heartbleed
OpenSSL Heartbleed
2016.09.07TLS는 확장 프로토콜로 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 악성코드 감염시 처리 프로세스
Windows 악성코드 감염시 처리 프로세스
2016.09.07초기 분석프로세스 확인네트워크 패킷 확인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 사용 기록 조사
USB 사용 기록 조사
2016.09.06```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
Tools - Forensic
2016.09.05이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
15'' whitehat contest, (= 16'' UXG)
15'' whitehat contest, (= 16'' UXG)
2016.09.04hwp 파일이 삽입된 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 주소 결정 방식
DLL, DLL mapping과 API 주소 결정 방식
2016.09.03DLL, 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..
System [ Exploit ]
System [ Exploit ]
2016.09.03이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
Anti debugging
Anti debugging
2016.08.31packer / protectorpacker패킹은 실행 압축이다. 압축으로 PE file의 크기를 줄이는게 목적이다.런타임에 언패킹 코드를 먼저 실행해 패킹이 풀리기 때문에, 메모리에 올라가는 코드는 차이가 없다.압축하다보니 언패킹 하기 전 바이너리나 섹션, IAT 등이 안보이는 부수효과도 있다.언패커가 공개되지 않은 패커일 경우 메뉴얼 언패킹 해야 하는데, 이 경우 리버싱을 어렵게 하는 효과도 있다.근데 어차피 리버싱을 어렵게 할거라면 안티 디버깅 등등이 들어가게 되기 때문에 사실상 packer 보다는 protector가 걸렸다고 봐야하는 경우가 대부분이다.언패킹 루틴을 빼면 성능의 차이는 없다고 봐야한다. protector리버싱을 막는게 목적이다.패킹에 Anti-Debugging, Code Obfus..
Base64 Radix64
Base64 Radix64
2016.08.31Base64 is a group of similar binary-to-text encoding. The Base64 index table: Value Char Value Char Value Char Value Char 0 A 16 Q 32 g 48 w 1 B 17 R 33 h 49 x 2 C 18 S 34 i 50 y 3 D 19 T 35 j 51 z 4 E 20 U 36 k 52 0 5 F 21 V 37 l 53 1 6 G 22 W 38 m 54 2 7 H 23 X 39 n 55 3 8 I 24 Y 40 o 56 4 9 J 25 Z 41 p 57 5 10 K 26 a 42 q 58 6 11 L 27 b 43 r 59 7 12 M 28 c 44 s 60 8 13 N 29 d 45 t 61 9 14 O 3..
IDA
IDA
2016.08.24이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
Ollydbg
Ollydbg
2016.08.21이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
SSH tunneling
SSH tunneling
2016.08.15```bash$ ssh user_name@remote_host_ip -p port```client와 server가 SSH tunneling으로 연결되어 있는 상태에서 client가 server와 연결된 SSH tunneling 포트를 이용해 최종 호스트로 데이터를 전송하면client는 SSH tunneling으로 연결되어 있는 포트로 들어오는 패킷을 SSL로 encryption 해서 server로 전송하고,server에서는 이를 받아 decryption한 다음 최종 호스트/포트로 전송한다.따라서 tunneling 구간은 client - server이다. 보통 tunneling 기능은 로컬포트포워딩을 사용하며, reverse SSH가 필요할 때 원격포트포워딩을 사용한다. Local port forwardi..