OS
SSH Server 설정
SSH Server 설정
2017.05.22SSH server Ubuntu server가 아니면 SSH를 따로 설치해주어야 한다. ```bash sudo apt-get install openssh-server ``` 이후 설정은 다음을 참고. http://www.drchaos.com/enable-ssh-on-kali-linux-enable-ssh-on-kali-linux/ https://lmgsecurity.com/enable-start-ssh-kali-linux/ SSH root 계정 접속 제한 ```bash vi /etc/ssh/sshd_config PermitRootLogin no vi /etc/pam.d/login Auth required /lib/x86_64-linux-gnu/security/pam_securetty.so ``` 공개키를..
STDIN _IO_FILE structure <_IO_2_1_stdin_> & fgets VS argv
STDIN _IO_FILE structure <_IO_2_1_stdin_> & fgets VS argv
2017.05.09STDIONote ) 파이프와 STDIO는 다르다!파이프는 키보드나 모니터같은 하드웨어 장치와 프로세스를 연결하는 방법이 아니라, 한 프로세스의 stdout을 다른 프로세스의 stdin으로 연결하는 IPC 방법이다. 따라서 STDIO는 pipe 구조로 이루어져 있는 것이 아니다! pipe에 접근하든 STDIO에 접근하든 file philosophy에 의해 `` fd``를 이용해 접근하기 때문에 착각할 수 있음. 파이프로 리다이렉션 하지 않는 경우 stdin, stdout, stderr은 모두 같은 character device를 가리키면서, read-only가 아니다.따라서 `` stdin``을 이용해 출력하거나, `` stdout``을 이용해 데이터를 쓰는 것이 가능하다.* stdio를 PIPE로 리다..
[*-nix] 패키지 관련 및 OS update & upgrade
[*-nix] 패키지 관련 및 OS update & upgrade
2017.04.13apt* family apt-get 대신 그냥 apt를 사용해도 된다. ```bash apt-get update package_name apt-get upgrade package_name ``` `` apt-get update`` : updates the list of available packages and their versions, but it does not install or upgrade any packages. `` apt-get upgrade`` : actually installs newer versions of the packages you have. After updating the lists, the package manager knows about available updates f..
[procfs_search.h] 메모리에서 특정 값의 주소 찾기
[procfs_search.h] 메모리에서 특정 값의 주소 찾기
2017.03.08https://github.com/umbum/pwn/blob/master/tools/procfs_search.h procfs에서 메모리 주소를 받아와 메모리 공간 내의 특정 값의 위치를 출력하는 프로그램.gdb가 너무 구버전이라 find 명령어가 없는 경우 쓸만하다.* `` objdump`` 또는 `` xxd``를 사용할 수 있지만 code section만 조회되며 동적으로 결정되는 다른 section, 예를 들면 so나 stack의 데이터는 찾을 수 없다. Usage파라미터 설정은 int mem_search(long startaddr, long endaddr)에서 하고procfs_search()를 호출하면 알아서 돌아간다. char target_array[] : 찾을 value. "/bin/sh"같은 ..
[Windows] 환경변수
[Windows] 환경변수
2017.02.15windows 환경변수 설정```set env_name="value"echo %env_name%```근데, Unix-based에서도 그렇 듯 해당 쉘에서만 임시로 추가된다.글로벌하게 사용하려면 .profile 등에 추가해줘야 하는 것 처럼 환경변수 탭에서 직접 설정해야 한다. windows 환경변수변수자료값 %ALLUSERSPROFILE%(윈도 XP) C:\Documents and Settings\All Users(윈도 비스타) C:\ProgramData %APPDATA%(윈도 XP) C:\Documents and Settings\{사용자 이름}\Application Data(윈도 비스타) C:\Users\{사용자 이름}\AppData\Roaming %COMPUTERNAME%{컴퓨터 이름} %COMSPE..
생성자, 소멸자 low-level
생성자, 소멸자 low-level
2017.01.13소멸자.dtors```080495f4 d __DTOR_END__```소멸자로 프로그램이 종료되기 전에 여기에 명시되어 있는 주소(함수)가 호출된다.`` __DTOR_END__``의 위치는 nm을 사용해도 좋고 readelf나 objdump로 확인해도 좋다. .fini_arraygcc 4.7 이상 버전은 .ctors .dtors를 사용하지 않는 대신 다음을 사용한다.``` [18] .init_array INIT_ARRAY 0000000000600e10 00000e10 0000000000000008 0000000000000000 WA 0 0 8 [19] .fini_array FINI_ARRAY 0000000000600e18 00000e18 0000000000000008 0000000000000000 WA 0..
secure-execution mode
secure-execution mode
2017.01.11secure-execution mode어떤 바이너리를 실행하면, dynamic linker(ld.so)는 getauxval()를 이용해 auxiliary vector인 `` AT_SECURE`` 값을 가져와 ``c 0``인지 확인하고 ``c 0``이 아니면 secure-execution mode로 실행한다.2017/09/02 - [System/Exploit] - Return to VDSO using ELF Auxiliary Vectors leck 다음과 같은 경우, ``c AT_SECURE != 0``이 된다.``c eUID != rUID`` 또는 ``c eGID != rGID`` 인 경우 ( => setUID나 setGID가 걸려있는 경우 )non-root UID process가 capability를 ..
ltrace & strace
ltrace & strace
2017.01.07ltracelibrary trace. userspace API call의 흐름을 볼 수 있다.```bash-S -- Display system calls as well as library calls``` strace ( man )system call trace. system call의 흐름을 볼 수 있다.출력되는 binary값이 16진수가 아니라 8진수 이므로 주의!```bash-i -- print instruction pointer at time of syscall-f -- follow forks, -ff -- with output into separate files-e func -c | -C -- count time, calls, and errors for each syscall and report ..
/proc/<pid>/maps
/proc/<pid>/maps
2017.01.04proc filesystemman procprocfs ( proc filesystem )은 유닉스 기반 OS에서 프로세스에 대한 정보나, 시스템 정보를 파일 형식으로 제공하는 것을 말한다. `` /proc/``의 파일들을 확인해보면 크기가 0인데, 이는 procfs 파일은 내부 자료구조에 접근하기 위한 인터페이스에 가깝기 때문이다.procfs 파일을 출력하려는 순간, procfs driver가 system call을 수행하여 procfs 파일에 대한 결과값으로 출력할 내용을 생성하게 되고, 이를 procfs 파일을 통해 출력하는 것이다.때문에 출력되는 procfs의 내용은 디스크에 존재하지도 않고, 메모리에 적재되어 있는 것도 아니며 크기가 얼마가 될지는 런타임에 결정되기 때문에 알 수 없어 0으로 잡힌..
[Ubuntu] 초기 설정 / 업데이트
[Ubuntu] 초기 설정 / 업데이트
2016.12.25https://subicura.com/2017/11/22/mac-os-development-environment-setup.html[OS/LINUX & UNIX] - [*-nix] apt* family 및 OS update & upgrade[OS/LINUX & UNIX] - Java 관련 (JDK, 설치, ...)[OS/LINUX & UNIX] - SSH Server 설정 한글 설정 18.04 LTS메뉴-검색 - Language support 들어가서 `` Install/Remove Language`` 클릭하고 Korean 설치.재부팅메뉴-검색 - input sources 들어가서 Korean (Hangul) 추가. ( 꼭 이거여야 함. 그냥 Korean이나 Korean 101이런거 말고.) 원래 우분투..
ptrace
ptrace
2016.12.25ptrace ( process trace )```c#include long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);```ptrace를 호출하는 tracer 프로세스가 타겟 프로세스인 tracee 프로세스를 컨트롤할 수 있도록 하는 함수.gdb에서도 내부적으로는 ptrace를 사용한다.windows에서는 ATTACH에 ``c DebugActiveProcess()``를 사용하고, 아직 실행되지 않은 프로그램을 디버거로 실행할 때는 ``c CreateProcess()``에서 `` dwCreationFlags`` 속성에 `` DEBUG_PROCESS``를 지정해서 실행한다.그러나 Unix-based 에서는 둘 다 ``c ..
로컬 접근으로 SAM & SYSTEM 획득 및 Windows password crack
로컬 접근으로 SAM & SYSTEM 획득 및 Windows password crack
2016.12.25Windows 설치 시 SYSTEM권한으로 실행되기 때문에 파일 시스템에 접근만 가능하다면 모든 파일을 얻어낼 수 있다.따라서 대상 시스템에 로컬 접근이 가능하다면 부팅디스크와 외부저장매체를 이용해 windows의 SAM, SYSTEM 파일을 얻어내서 크랙할 수 있다.사실 로컬 접근이 가능하면 하드를 아예 가져가서 분석해도 되는거겠지만, windows 패스워드를 잊었거나 특정 파일만 얻어내고 싶을 때 유용하게 사용할 수 있다.ophcrack이라고 windows password crack이 아예 LiveCD로 나온 것도 있기는 한데, 이도 rainbow table 기반이라 결국 table에서 매치되는게 없으면 brute force로 넘어가게 돼서 처음에 매치 안되면 굉장히 느리다.반면 직접 SAM을 얻어내..