전체 글
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:ValueChar ValueChar ValueChar ValueChar0A16Q32g48w1B17R33h49x2C18S34i50y3D19T35j51z4E20U36k5205F21V37l5316G22W38m5427H23X39n5538I24Y40o5649J25Z41p57510K26a42q58611L27b43r59712M28c44s60813N29d45t61914O30e46u62+15P31f47v63/ Encoding example. 3 char( Byte ) 씩 끊어서 읽고 4 char로 encoding(3Byte -> 4Byte)한다. Text contentManASCII7..
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..
Shell shock
Shell shock
2016.08.15Bash 코드 인젝션 취약점(CVE-2014-6271 / CVE-2014-7169)환경변수 함수 정의 뒤에 임의의 실행코드를 추가하면 Bash에서 해당 환경 변수를 임포트하는 과정에서 추가된 실행코드가 루트권한으로 함께 실행된다. ```cbash-3.2$ env efunc='() { :;}; echo vulerable'vulnerable``` 사용 중인 시스템에 취약점 CVE-2014-7169이 존재 여부는 아래의 명령어를 통해 간단히 테스트 할 수 있다. Bash 코드 인젝션 취약점 스캔 공격자는 아래와 같은 과정을 통해 원격코드 실행을 테스트함으로써 해당 취약점이 포함된 Bash를 구동하는 웹 CGI 환경을 지속적으로 탐색하는 것으로 관찰되었다. 따라서 일반적인 웹 환경의 /cgi-bin/ 디렉토리 ..
P, NP, NP-hard, NP-complete
P, NP, NP-hard, NP-complete
2016.08.15P(deterministic polynomial time)는 다항시간 내에 답을 구할 수 있는 문제들의 집합. NP는 다항 시간 내에 답을 구할 수 있는 비결정적(Nondeterministric) 알고리즘이 존재하는 decision problem의 집합.(NP : Nondeterministric Polynomially bounded) NP-hard는 모든 NP의 문제들이 polynomial time 내에 문제 H로 환산될 수 있는 문제 H들의 집합.(reducible) NP-complete는 NP에 속하면서, 모든 NP에 대해 polynomial-time내에 reducible한 문제들의 집합.NP-complete에 해당하는 문제는 그들 중 단 한 문제에 대한 효율적인 알고리즘이 존재한다는 것이 증명되면 ..
NetBIOS over TCP (NBT)
NetBIOS over TCP (NBT)
2016.08.15NetBIOS는 LAN에서의 자원 입출력을 정의한 API다. 실제 네트워크 상에서는 네트워크 제어 블록(NCB) 형태로 제공되며크게 다음 세 가지 기능을 제공한다.Name service UDP-137Datagram distribution service UDP-138 (connectionless 일 경우)Session service TCP-139 (connection oriented 일 경우) Name serviceNBT의 핵심적인 기능으로, Name query를 이용해 해당 name을 가진 host의 IP를 획득한다.이 query는 (WINS같은) Name server에 보낼 수도, host에 보낼 수도 있다. 아무튼, NetBIOS는 LAN에서 사용하는 프로토콜이다. LAN에서도 결국 상위 Layer에..
[Windows] Command & Conf file Path
[Windows] Command & Conf file Path
2016.08.15`` arp -a``현재 호스트와 연결되어 있는 다른 호스트의 IP와 MAC 출력 (ARP table)`` shutdown -r -t 0```` netstat -anob``-a 전부-n url->ip로, protocol->port 번호로 출력-o PID 출력-b 프로세스 이름 출력 [관리자 권한 필요]`` findstr " "```` whoami /user``SID 확인`` xcopy```` fc```` tasklist```` taskkill```` net use & net share`` dump 파일 위치```bashBSOD dump %SYSTEMROOT%\Minidumpwin 10 %USERPROFILE%\AppData\Local\CrashDumpsMEMORY dump %SYSTEMROOT% // d..
리눅스 파일 설치과정 / Makefile 작성 / 윈도우에서 make하기. nmake
리눅스 파일 설치과정 / Makefile 작성 / 윈도우에서 make하기. nmake
2016.08.151) source code 2) ./configure [옵션] (생략)옵션에 따라 Makefile 생성이 때 configure 파일은 source code 제작자가 마음대로 만든 shell script이기 때문에 옵션 설명을 읽어봐야함. 3) makeMakefile에 나와있는 source code간의 관계, 필요한 컴파일러 등을 참고해서 컴파일한다. 4) make install적당한 디렉토리로 파일을 이동시키거나, make 결과인 설치파일을 실행한다. 빌드 스크립트 자동으로 만들어주는 패키지들.```bashapt-get install autoconf, automake, libtool, autoscan``` Makefile 작성법```bashmake -p``````maketarget: dependencie..