IT 110

[Malware: Malicious Software] Type, History, Detection, Trend

Malware types Virus: OS 등 host에서 target file (일반적으로 실행파일)을 찾아 자기 자신의 복사본을 삽입하여 전파하는 코드 조각 * virus의 주요 위치: - Boot sector -> 다른 어떤것보다도 먼저 control 능력을 가짐  - Memory resident - Applications, macros, data, etc. - Library routines - Compilers, debuggers, virus checker, etc. * 독립적으로 실행될 순 없고, host 프로그램이 이것을 실행하게 해야 실행됨* target file이 실행되면 virus도 실행되기 시작 * 오염된 file이 machine에서 machine으로 이동할 때에만 퍼짐 Worm: 어떤..

IT/시스템 보안 2024.06.11

[Command Injection] 발생 원리, exploit 예시, 예방

Command Injection: 시스템 명령어를 실행하는 함수에 이용자가 입력을 통해 임의의 인자를 전달할 수 있을 때 발생- 공격에 사용되면 웹 애플리케이션에 임의 명령어를 실행할 수 있어 공격 파급력이 높음인젝션(Injection): 악의적인 데이터를 프로그램에 입력하여, 이를 시스템 명령어, 코드, 데이터베이스 쿼리 등으로 실행되게 하는 기법- 웹 애플리케이션을 대상으로 하는 인젝션 공격은 SQL Injection, command injection 등이 있음  발생하는 이유웹 애플리케이션을 개발하다보면, 어떤 기능에 대해서는 스스로 코드를 작성하기보다 이미 설치된 소프트웨어를 사용하는 것이 편리할 때가 있다. 업로드 디렉토리에 있는 파일들의 이름을 출력하는 웹 애플리케이션을 만든다고 할 때, 디렉..

IT/웹 보안 2024.06.08

[NoSQL Injection & Blind NoSQL Injection]

NoSQL Injection: 이용자의 입력값이 쿼리에 포함되어, 이용자가 원하는 요청을 실행하는 취약점 ㅡ SQL Injection과 공격 목적 및 방법이 매우 유사 SQL과 달리, NoSQL은 사용하는 DBMS에 따라 요청 방식과 구조가 다른데이 글에서는 MongoDB에서의 NoSQL Injection만 알아볼 것임 MongoDB에서는 SQL이 저장할 수 있는 데이터의 자료형인 문자열, 정수, 날짜, 실수 외에도 오브젝트, 배열 타입을 사용할 수 있는데,오브젝트 타입의 입력값을 처리할 때에는 쿼리 연산자를 사용할 수 있어,이를 통해 다양한 행위가 가능 >> Node.js의 express 프레임워크로 짜인 소스코드 예시const express = require('express');const app = ..

IT/웹 보안 2024.06.08

[SQL Injection & Blind SQL Injection]

SQL InjectionDBMS의 SQL 쿼리에 임의의 입력값을 넣어 쿼리를 조작하여, 인증을 우회하거나 데이터베이스 정보를 유출하는 공격- SQL을 이해하고 있다면, 모든 RDBMS에 대해 SQL Injection 가능SQLDBMS에 데이터를 질의하는 언어Injection이용자의 악의적인 입력값이 애플리케이션의 처리 과정에서 구조나 문법적인 데이터로 해석되어 발생하는 취약점 예시 상황웹 서비스 내에,로그인을 위해 아이디와 비밀번호를 입력받고, 이를 DBMS에 조회하기 위한 쿼리에 포함하여 쿼리를 실행하는 페이지가 있다 하자.  이때 user_table은 아래와 같다. 정상적인 쿼리아이디와 비밀번호 칸에 정상적으로 각각 dreamhack, password를 입력하면 쿼리는 아래와 같이 생성된다. 쿼리 설..

IT/웹 보안 2024.06.08

[Cross Site Request Forgery (CSRF)]

CSRF는 임의 이용자의 권한으로 임의 주소에 HTTP 요청을 보낼 수 있는 클라이언트 측 취약점이다.  웹 서비스 예시 소스 코드이용자로부터 예금주와 금액을 입력받고 송금을 수행한다. 이때 계좌 비밀번호, OTP 등을 사용하지 않기 때문에,로그인한 이용자는 추가 인증 정보 없이 해당 기능을 이용할 수 있다. 송금 요청이 담긴 request는 아래와 같다.  1.attacker는 페이지에 악성 스크립트를 심고, 여기에 victim(정상 이용자)이 접속하도록 / 값을 입력하도록 유도한다.  eg) 악성 스크립트가 담긴 글을 게시판에 작성 악성 스크립트: HTTP request를 보내는 코드- HTML 또는 Javascript를 통해 작성할 수 있음 HTML을 통한 공격 코드 예시태그를 사용해 HTTP 요청..

IT/웹 보안 2024.06.08

[Heartbleed Attack] TLS Record Protocol, Heartbeat Protocol, Heartbleed Attack

TLS▶TLS layer• Application layer→TLS: unprotected data 전송됨• TLS: handles encryption, decryption, integrity checks 수행• TLS→Transport layer: protected data 전송됨 ▶TLS Record ProtocolTLS handshake가 끝나면 client와 server는 header와 payload로 구성된 record를 이용해 데이터를 교환한다. Record Sending Data Receiving Data ▶Hearbeat protocol in OpenSSLclient와 server가 일정 기간 이상 서로에게 데이터를 보내지 않으면 통신을 막음으로써,TLS의 keep-alive feature을..

IT/시스템 보안 2024.06.07

[Cache Side-channel Attacks] Cache, Flush+Reload, Prime+Probe, Countermeasure

배경지식: Cache Locality: 프로그램이 실행되는 동안 주소 공간의 일부분만을 집중적으로 접근하는 경향▶Temporal locality: 최근에 access된 것은 곧 다시 access될 확률이 높다- 따라서 최근에 접근된 데이터를 프로세서 가까이에 유지하면 성능 향상됨 eg. 반복문 안에서는 동일한 명령어가 반복적으로 실행되기 때문에, 해당 명령어는 다시 접근될 확률이 높다.▶Spatial locality: 최근에 access된 것 가까이에 있는 것은 곧 access될 확률이 높다 메모리의 연속적인 주소 공간이 자주 함께 사용되는 경우가 많기 때문 - 따라서 연속된 데이터 블록을 메모리의 상위 수준으로 옮기면 성능 향상됨eg. 배열은 메모리에 연속적으로 저장되며, 배열의 요소들이 순차적으로 접..

[File System] VSFS(very simple file system)

overall organization▶block: 위 사진에서 각각의 작은 네모 하나. 4kB  ▶Data region: user data 저장  ▶Inode: 파일의 주요 metadata 정보 (파일이 나뉘어있는 data block이 어떤건지, 파일 크기, 소유자, 파일에 대한 접근 권한과 접근/수정 시간 등)를 track하기 위해 이들이 저장된 곳- inode number에 의해 위치가 계산되어 refer- 위 사진의 Inode table에서 주황색 네모 하나. 256B- 위 사진 기준으로는 Inode가 총 80개이므로, 가능한 최대 파일 개수도 80개이다. ▶Inodes(Inode table): Inode의 array임 ▶Bitmap: Inode나 Data block의 free(0) / alloca..

[File System] File & Directory, Hard link & Soft Link

File: byte의 선형 배열임  - low-level filename: inode number create와 remove▶create- fd: fild descriptor - 정수값임  ▶remove  offset: read/write을 시작할 파일 내 위치 ▶offset에 영향을 주는 함수- read()- write()- lseek(): read/write offset을 재설정  ▶traces example write()와 fsync()▶write(): 데이터를 우선 메모리 버퍼에 write하고, '나중에' disk로의 업데이트 ▶fsync(): 즉시 disk에 write함   fork()와 dup()▶fork()- child process는 parent process의 file descriptor..

[Secondary Storage] HDD(Hard Disk Drives), RAID(Redundant Array of Inexpensive Disks)

HDD Basic geometryTrack skewtrack 경계를 건너갈 때일지라도 연속적 read (여러개의 sector read)가 잘 수행되도록.track skew의 원리가 지하철 환승의 매커니즘과 같다는 생각이 들었다.내가 1호선에서 2호선으로 갈아탄다 치자.1호선에서 내린 뒤 2호선이 너무 곧바로 오면,그 열차는 놓치게 되고, 결국 다음 열차를 위해 배차간격을 거의 통으로 기다려야 한다.반면, 만약 2호선이 곧바로가 아니라, 아주 센스있게 "내가 1호선에서 2호선으로 걸어갈 여유가 있도록" 약간 딜레이를 두고 와준다면,나는 2호선 열차를 안전하게 탈 수 있다! 만약 disk가 아래와 같고, 22번과 34번 sector를 순서대로 read하려 한다 치자.22번을 읽은 뒤, head가 34번으로 ..