OS
Interrupt
Interrupt
2016.10.07Interrupt가 발생하면 CPU는 ISR로 진입하게 되며 Interrupt를 적절히 처리해 주는 것은 OS의 역할이다.이는 Interrupt가 하드웨어적으로 CPU에 바로 입력되기 때문에 가능하다.* CPU pin 중에 Interrupt pin이 하나 존재한다.각각의 디바이스는 Interrupt Controller를 가지고 있는데, 여기서 CPU의 Interrupt pin으로 전기적 신호를 보내는 식으로 동작한다. Interrupt VS SignalInterrupts can be viewed as a mean of communication between the CPU and the OS kernel. Signals can be viewed as a mean of communication between..
Windows boot process, MBR
Windows boot process, MBR
2016.10.02MBR 앞쪽 440Byte에는 bootstrapping program이 들어있고, OS-specific하다. ( Windows MBR laoder, LILO, GRUB... )MBR의 446~509( 64Byte )Byte에 Partition Table이 들어있고, bootstrapping program과 달리 표준화되어있다. 각 파티션은 16Byte를 사용하므로 기본적으로 4개의 파티션에 대한 정보를 나타낼 수 있다. 각 파티션 정보의 첫 번째 바이트는 해당 파티션이 부팅 가능한 파티션인지 나타낸다. ( 0x80이면 부팅 가능 0x00이면 불가능 ) MBR 바이너리는 이렇게 생겼다.드라이브 1 드라이브 1의 MBR code 드라이브 2 드라이브 2의 MBR code파티션 테이블이 잘못되면 출력되는 In..
RDP를 활용한 Shadowing & Remote control
RDP를 활용한 Shadowing & Remote control
2016.09.30Shadowing Terminal Services session을 이용해 다른 터미널 세션을 컨트롤 할 수 있다. 즉 다른 사용자가 보고있는 그 화면 자체를 보거나, 컨트롤 할 수 있기 때문에 이를 이용해 원격지원 할 수 있다. RDP 시 `` /shadow:[sessionID]``를 붙여주거나, 일단 RDP로 연결한 다음 `` cmd - mstsc /shadow:[sessionID]`` 또는 `` 작업관리자 - 사용자 - user 우클릭 - 원격제어```` gpedit.msc``설정에 따라 Host에 세션에 shadow가 붙는다는 내용의 안내문구와 수락/거부 팝업이 뜬다.세션을 유지한 채 shadowing을 종료하려면 `` Ctrl + *`` (tenkey쪽 버튼으로 눌러야함) Windows 10 호스..
xinetd / micro-inetd
xinetd / micro-inetd
2016.09.26micro-inetd```bashusage: micro-inetd port program [args...]``` xinetd원래 유닉스 기반 시스템에서 네트워크 서비스를 제공하는 방법으로는 inetd + tcpd 조합과 standalone 방식이 있었다.요즘은 보안측면의 한계로 inetd 대신 xinetd를 사용한다.xinetd를 사용하면 tcpd로 패킷을 포워딩 해줄 필요 없다. TCP wrapper를 사용 안한다는 의미는 아니고, 별도의 프로그램(tcpd)을 따로 사용할 필요가 없어진 거라고 생각하면 된다. 기본 설정파일은 `` /etc/xinetd.conf`` 이고,xinetd가 제공하는 서비스들의 설정은 `` /etc/xinetd.d/``에 각각 존재한다.* 프로세스는 설정 파일에 지정된 `` u..
System call / vDSO, vsyscall
System call / vDSO, vsyscall
2016.09.18System callsystem call은 user가 Software Interrupt를 걸 수 있도록 user process에 제공되는 인터페이스(API)다. 대부분의 kernel에서는 user 어플리케이션이 kernel space에 직접 접근하지 못하도록 `` addr_limit``를 설정해 놓았다.특정 프로세스가 kernel space를 수정하거나 하드웨어 디바이스를 직접적으로 조작하는 것을 막기 위해서다.따라서 어플리케이션이 상기 작업을 처리해야 하는 경우 kernel이 대신 작업을 수행하도록 요청하고 그 결과를 반환받는 수 밖에 없는데, 이를 위해 kernel에서 제공하는 인터페이스가 system call이다. 일반적으로 많이들 사용하는 glibc 등도 내부적으로는 system call을 사용하..
Preemptive / Non-preemptive ( 선점형 / 비선점형 스케줄링 )
Preemptive / Non-preemptive ( 선점형 / 비선점형 스케줄링 )
2016.09.18CPU schedulingCPU 스케줄링의 결정 시점은 다음과 같은 프로세스의 상태 변화가 있을 때이다.수행 → 대기 interrupt수행 → 준비 time-out대기 → 준비 wake-up수행 → 종료 * 대기 → 수행 dispatch Preemptive / Non-preemptive비선점형 스케줄링(Non-preemptive Scheduling)비선점형은 위의 결정 시점 중 1번과 4번의 상황에서만 스케줄링이 발생한다.어떤 프로세스가 CPU를 할당 받으면 그 프로세스가 종료되거나 IO request가 발생하여 자발적으로 대기 상태로 들어갈 때까지 계속 실행된다.일반적으로 선점형보다 scheduler 호출 빈도가 낮고 context switching overhead가 적다.즉, 어떤 프로세스가 작업을 ..
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..
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/ 디렉토리 ..
[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..
[LINUX & UNIX] Conf file Path, 설정, log
[LINUX & UNIX] Conf file Path, 설정, log
2016.08.10유닉스 리눅스 커널 설정 파일 /etc/system /etc/sysctl.conf 로그 저장 경로 /var/adm/ /var/log/ 로그 설정 파일 /etc/syslog.conf ( syslogd ) 대부분의 설정 파일 /etc/default/ 로그인 관련 /etc/default/login sudo 설정 파일 /etc/sudoers sudo visudo PAM 대상 서비스 설정 /etc/security/limits.conf 웹서버 설정 %webservdir%/conf/httpd.conf ( 웹서버 디렉토리는 대체로 /usr/local/apache ) DNS 서버 구성 /etc/named.conf DNS query 대상 서버 지정 /etc/resolv.conf 서비스 포트 지정 /etc/services ..
r 계열 명령어
r 계열 명령어
2016.08.09R command로 불리는 r 계열의 명령어(`` rsh, rlogin, rcp, rmd``) 등을 사용할 경우 `` $HOME/.rhosts`` 파일만 검사해서 요청을 처리하게 된다. `` .rhosts`` 파일의 형식.```hostname [username]````` hostname``은 접근을 허락하는 호스트, `` username``은 접근을 허락하는 사용자명.`` +@netgroup`` 으로 적어줄 시에는 `` netgroup``에 속한 모든 사용자의 접근을 허락하며, `` -hostname``으로 명시할 경우 `` hostname``을 통해 접근하는 모든 사용자를 거부하게 된다. .rhost 파일 생성 방지`` $HOME/.rhosts``라는 디렉퇴를 만든 다음 디렉토리 안에 임의의 파일을 생..