메서드를 선언하고 호출하기 다음과 같이 int 타입을 반환하는 power 함수를 선언하여 호출할 수 있을 것입니다. 하지만 어림도 없이 에러가 뜹니다. 왜 이럴까요? 함수의 앞에 static을 붙이지 않았기 때문인데, 이는 다음 static과 private에서 정리하도록 하겠습니다. import java.util.Scanner; class Exam02 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int result = power(a,b); System.out.println(result); sc.close(); } int power..
분류 전체보기
배열 배열을 생성하는 방식은 C와는 조금 다릅니다. 먼저 배열을 선언하고, 그 다음 new 명령어와 크기를 지정하여 배열을 생성해야 합니다. class Exam02 { public static void main(String[] args) { // 배열을 생성하겠다는 의사 표현 int [] grades; // new 명령어와 크기를 지정하여 실제 배열을 생성 grades = new int[5]; } } 이러한 두 가지 과정을 주로 한 줄로 표현합니다. int [] grades = new int[5]; 배열의 크기는 어떻게 찾을 수 있을까요? 바로 array.length 를 활용할 수 있습니다. class Exam02 { public static void main(String[] args) { int [] ..
사용자 입력 라이브러리 사용자 입력을 받기 위해서는 다음 모듈을 import 해야 합니다. import java.util.Scanner; 정수형인 경우와 문자열인 경우 다음과 같이 Scanner로 선언한 변수의 nextInt(), next() 메서드를 통해 전달받을 수 있습니다. Scanner sc = new Scanner(System.in); // 정수형인 경우 int num = sc.nextInt(); // 문자열인 경우 String input = sc.next(); 이때 "Hello World"를 사용자가 입력했을 때, next() 메서드의 경우 띄어쓰기 이전인 "Hello"만 받아옵니다. 그러므로 다음 "World"를 가져오기 위해서는 다른 변수에 next() 메서드를 사용하여 전달해야합니다. i..
실습에 앞서 이전 포스팅에서 curl 명령을 통해 OpenStack API를 호출하여 로그를 추출하려고 했지만 DevStack으로 OpenStack을 설치해서인지 원활히 진행되지 않았습니다. 공식 문서에 시스템 로그를 조회하는 journalctl 명령을 통해 DevStack을 통해 설치한 OpenStack에서의 로그 수집 방법이 나와 있어서 이를 통해 로그 파일을 생성하고, ELK와 연동하여 임의로 가정한 특정 공격에 대한 이벤트를 가시화하는 실습을 진행하겠습니다. https://docs.openstack.org/devstack/latest/systemd.html Using Systemd in DevStack — DevStack documentation Using Systemd in DevStack By..
실습에 앞서 공부하면서 정리하여 부족한 부분이 많습니다. 구축 환경은 다음과 같습니다. - VMware workstation 17 pro in Windows OS - Ubuntu 22.04 LTS DevStack으로 OpenStack 설치하였고, Elasticsearch, Kibana, Logstash 또한 설치하였습니다. OpenStack API 1. OpenStack API Token 발급 먼저 curl 명령을 통해 인증을 위한 OpenStack API 토큰을 발급 받아야합니다. # [login_id]: 로그인 ID # [login_pw]: 로그인 PW # [Allocated Openstack URL]: OpenStack Server URL curl -i \ -H "Content-Type: appli..
오픈스택이란? 오픈스택은 IaaS 형태의 클라우드 컴퓨팅 오픈 소스 프로젝트로 세계에서 가장 널리 배포된 오픈 소스 클라우드 소프트웨어입니다. 가상머신, 베어메탈 및 컨테이너를 위한 클라우드 인프라로 많은 기업에서 활발하게 사용하고 있습니다. IaaS 계층의 클라우드 운영체제인 오픈스택은 가상 머신에 대해 컴퓨팅, 네트워크, 스토리지의 3가지 리소스를 제공하고 관리합니다. 오픈스택 핵심 요소 1. Nova Compute 서비스인 Nova는 computing 자원을 제공하는 서비스입니다. 실제 물리적인 Host 시스템 위에서 작동하는 VM들을 관리하는 역할을 수행하며, Nova-api, Scheduler, Compute, Conductor 등으로 다양한 요소들이 존재하고 각 요소는 독립적인 역할을 수행합니..
MITRE ATT&CK Cloud Matrix Cloud Matrix는 11개의 전술과 56개의 기술로 구성된다. Initial Access 설명 네트워크 내에서 초기 발판을 얻기 위해 공격자들이 사용하는 공격 벡터 공격 기술 1. Phishing (T1566) 2. Valid Accounts (T1078) Execution 설명 로컬/원격 시스템에서 공격자가 만든 코드를 실행하는 기술 공격 기술 1. User Execution (T1204) SNS를 통한 악성 문서 파일/링크 여는 등 사용자의 특정 행동에 의존하여 공격자가 실행을 얻는 기법 2. 악성 이미지 실행 (T1204.003) 이미지에 백도어를 삽입하여 멀웨어를 실행시킨다. Persistence 설명 - 시스템에 대한 접근, 조치, 구성 변경을..
진단 실습 가정 및 환경 Docker는 Client - Server 구조를 갖기 때문에 Client가 원격으로 REST API를 통해 Docker를 이용할 수 있습니다. 그러나 관리자의 Container에 대한 접근 제한 미비 등 안전하지 않은 설정(Misconfiguration)으로 인해 악의적인 공격자는 REST API를 이용하여 Container ID 뿐 아니라 원격에서 Container 실행 뿐 아니라 종료, 로그 또한 남길 수 있습니다. 원래는 Attacker 환경, Victim 환경을 따로 구성해야하지만, 본 실습에서는 Victim에서 REST API 서비스 포트를 임의로 지정한 후, 공격자가 이를 찾아냈다는 가정 하에 하나의 Victim 가상환경에서 공격자 입장으로 여러 명령을 실행해보도록 ..
설치 환경 테스트 환경으로 구성하기에 적합한 Devstack을 통해 오픈 스택을 설치하도록 하겠습니다. - VMware Workstation 17 pro - Ubuntu 22.04 LTS Desktop(메모리 8GB, 80GB, 4 Core) 설치 1. Repository Update 및 패키지 설치 $ sudo apt update $ sudo apt install python3 python3-pip virtualenv git 2. stack 사용자 생성 및 권한 설정 $ sudo useradd -s /bin/bash -d /opt/stack -m stack $ sudo chmod +x /opt/stack $ echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/..
네트워크 계층 네트워크 계층은 송신자측에서 수신자측까지 데이터를 안전하게 전달하기 위해 논리적 링크를 설정하고 상위 계층 데이터를 작은 크기의 패킷으로 분할하여 전송하는 역할을 수행한다. 네트워크 계층의 서비스는 크게 두 가지이다. ① 라우팅 - 패킷이 근원지에서 목적지까지 갈 수 있도록 경로를 찾는 것 ② 포워딩 - 라우터 상의 하나의 인터페이스에 패킷이 도착했을 때 라우터가 취하는 행동 IPv4 주소 1. 클래스 기반 주소 지정(Classful Addressing) 클래스 설명 클래스 A 첫 번째 bit가 0인 IP 주소. 첫 byte의 나머지 7bit가 네트워크 주소이고, 하위 3byte는 호스트 주소이다. 클래스 B 처음 두 bit가 10인 IP 주소. 첫 byte의 나머지 6bit와 두 번째 b..