목록분류 전체보기 (420)
외로운 Nova의 작업실
해당 문서는 시험 전에 다시한번 봐야할 부분을 정리해보도록 하겠습니다. 1. 동기식 스트림암호화 비동기식 스트림 암호의 특징 - 동기식 스트림 암호와 비동기식 스트림 암호 동기식 스트림 암호 : 스트림 암호에서 키 스트림은 평문 혹은 암호문 스트림과 독립적인 암호를 말합니다. ex) One time pad : 암호화를 수행할때 랜덤하게 생성된 키 스트림을 사용합니다. 전수공격법으로 해독을 하여도 여러가지 버전의 평문을 얻게되므로 이론적으로 해독 불가능하다고 알려져 있습니다. 암호화와 복호화에서 상호 동기화가 필수입니다. 암호화에서 만든 키스트림을 복호화에서도 똑같이 키스트림을 만들어야하기때문에 입을 맞춰야하기때문이빈다. 전송도중 변조되어도 후속 암호문에 오류의 영향이 파급되지 않습니다. 암호스트림을 전송..
리버싱 엔지니어링 바이블에서 나온 함수호출 규약을 간단히 정리해보려고합니다. - 함수 호출 규약 __cdecl : 호출자가 스택을 정리합니다. __stdcall : 피호출자가 스택을 정리합니다. __fastcall : 인자가 2개라면 ecx와 edx를 사용합니다. __thiscall : c++에서 자주사용하는 함수로 ecx에 this 포인터가 담깁니다.
- 카나리 스택 카나리는 함수의 프롤로그에서 스택 버퍼와 반환 주소 사이에 임의의 값을 삽입하고, 함수의 에필로그에서 해당 값의 변조를 확인하는 보호 기법입니다. 카나리 값의 변조가 확인되면 프로세스는 강제로 종료됩니다. 카나리값의 첫번째 값은 leak을 방지하기위해 보통 null값입니다. - 카나리 할당 과정 1. 프로세스는 프로그램을 실행하고 카나리를 fs 세그먼트의 주소값을 설정합니다. 이때 fs 주소값이 설정되면 시스템은 arch_prctl()함수를 호출합니다. 2. 이후 fs 세그먼트 공간이 확보되면 프로그램이 작동하면서 fs세그먼트 시작부분으로부터 0x28번째 공간에 임의의 값으로 넣습니다. 3. 이후 카나리를 사용해야하는 프로그램은 이 카나리값을 사용합니다. - 카나리가 적용된 프로그램과 미..
- 제트팩 제트팩이란 안드로이드 플랫폼이 기본적으로 제공하는 플랫폼 API외에 따로 추가된 라이브러리입니다. 플랫폼 API란 android.App.Activity와 같은것입니다. 제트팩은 androidx로 시작하는 패키지명을 사용합니다. 제트팩은 크게 다음 3가지 목적으로 제공됩니다. 앱을 개발하는 데필요한 권장 아키텍처를 제공합니다. API레벨의 호환성 문제를 해결합니다. 플랫폼 API에서 제공하지 않는 다양한 기능을 제공합니다. 호환성 문제를 해결해주기때문에 플랫폼 API에서 지원하는 것을 제트팩에서도 지원한다면 제트팩을 많이 사용합니다. 제트팩의 화면 구성과 관련된 라이브러리를 소개하면 다음과 같습니다. androidx.appcompat : 앱의 API 레벨 호환성을 해결합니다. androidx.r..
안녕하세요. 이번시간에는 basic_exploitation_001을 풀어보도록 하겠습니다. - 문제인식 이번에는 NX 보호기법이 걸려있어서 스택에 쉘코드를 집어넣고 실행하지 못하는 걸 알 수 있습니다. 운영체제는 우분투 16.04를 쓰고 아키텍처는 i386 아키텍처를 쓰는 것을 알 수 있습니다. 이 환경에서 리버싱을 해서 프로그램의 구조를 알아야되지만 저는 윈도우를 쓰고 있기때문에 불가능합니다. 그에따라 리버싱관련해서 알아내는 것은 다른 페이지를 참조할까합니다. #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF,..
파이썬 interactive() 함수는 신기합니다. 저의 쉘과 상대방의 쉘이 연결된 것 처럼 보입니다. 이를 어떻게 구현하는지 한번 알아보겠습니다. - interactive()함수가 신기한 이유 먼저 우리는 소켓 프로그래밍을 할때 서로간의 통신은 문자열로 통신을 합니다. recv() 함수와 send()함수로 말입니다. 하지만 상대방의 쉘에 send()함수로 명령을 내려도 쉘에서 나온 문자열이 send() 되지 않으니 상대방 쉘이 출력한 값을 알 수 없습니다. 하지만 interactive()함수는 그것을 가능하게합니다. - creatprocessA() 함수 c언어에서 CreateProcessA() 함수가 있습니다. 이 함수를 아래와 같이 씁니다. CreateProcessA(NULL, "cmd.exe", N..
- 소리 알림 사용자에게 짧은 소리로 특정한 상황을 알리때가 있습니다. 대표적으로 문자앱에서 새로운 메시지를 전달받으면 사용자 알림 효과로 짧은 소리를 이용해 알려줍니다. 이런 목적으로 사용하는 짧은 소리를 알림음이라고 합니다. 알림음은 녹음한 음원을 쓸 수도 있지만 안드로이드 시스템에 등록된 소리를 이용할 수 있습니다. 안드로이드시스템은 알림(notification), 알람(alarm), 벨소리(ringtone)등의 소리를 제공하며 이소리는 RingtonManager로 얻을 수 있습니다. class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInsta..
- 토스트 메시지 띄우기 토스트는 화면 아래쪽에 잠깐 보였다가 사라지는 문자열을 의미합니다. 토스트는 Toast의 makeText()함수로 만듭니다. open static fun makeText(context: context!, txt: charsequence!, duration: Int): Toast! open static fun makeText(context: context!, resId: Int, duration: Int): Toast! val toast = Toast.makeText(applicationContext, "해당 권한을 허용해주셔야 앱 사용이 가능합니다.", Toast.LENGTH_SHORT). 토스트 메시지가 사라질때 혹은 나타날때 반환되는 콜백함수를 추가할 수 도 있습니다. 이는 ..
- 정보통신 기반 보호법 1항 : 이법은 전자적 침해행위에 대비하여 주요정보통신기반시설의 보호에 관한 대책을 수립 시행함으로써 동 시설을 안정적으로 운영하도록 하여 국가의 안전과 국민의생활의 보장하는 것을 목적으로 한다. 1항 : 정보통신기반시설이라 함은 국가안전보장 행정 국방 치안 금융 통신 운송 에너지 등의 업무와 관련된 전자적 제어 관리시스템 및 정보통신망 이용촉진 및 정보보호등에 관한 법률 제2조제1항제1호의 규정에 의한 정보통신망을 말한다. 2항 : 전자적 침해행위란 정보통신기반시설을 대상으로 해킹, 컴퓨터바이러스, 논리 메일 폭탄, 서비스거부또는 고출력 전자기파 등에 의하여 정보통신기반시설을 공격하는 행위를 말한다. 1항 : 주요정보통신기반시설의 보호에 관한 사항을 심의하기 위하여 국무총리 소..
이번시간에는 드림핵 basic_exploitation_000 문제를 풀어보도록 하겠습니다. 저의 환경은 윈도우지만 wsl을 사용하는중입니다. - 문제인식 서버의 취약점을 찾고 익스플로잇한 후 셸을 획득하는 문제입니다. 아래는 서버의 환경으로 하나씩 보게습니다. Ubuntu 16.04 : 운영체제 입니다. Arch: i386-32-little : CPU 아키텍처로 어셈블리어를 작성할때 필요합니다. RELRO: No RELRO : relocation read only의 약어로 BSS빼고 모두 write이 안되게 보호하는 기능입니다. 하지만 no RELRO이기때문에 기능이 꺼져있는 것을 알 수 있습니다. 즉, code 영역도 write 할 수 있다는 얘기입니다. Stack: No canary found : s..