/ 보안 훈련
- 매뉴얼 훈련
'정보보안학원 > KITRI 침해대응' 카테고리의 다른 글
101일차 - 보안가이드라인 (0) | 2023.03.09 |
---|---|
100일차 - 보안가이드라인 (0) | 2023.03.08 |
99일차 - 보안가이드라인 (0) | 2023.03.07 |
98일차 - 보안가이드라인 (0) | 2023.03.07 |
97일차 - 이더채널 (0) | 2023.03.03 |
/ 보안 훈련
- 매뉴얼 훈련
101일차 - 보안가이드라인 (0) | 2023.03.09 |
---|---|
100일차 - 보안가이드라인 (0) | 2023.03.08 |
99일차 - 보안가이드라인 (0) | 2023.03.07 |
98일차 - 보안가이드라인 (0) | 2023.03.07 |
97일차 - 이더채널 (0) | 2023.03.03 |
/ 리눅스
- 리눅스는 자신의 상태를 알려주는 다양한 기능이 존재한다.
- 자동 보고 기능
- abrt-cli list --since 1677720201
- rsyslogd ---> /var/log
> 윈도우(sysmon.exe)
/ 윈도우 방화벽
- 방화벽 : 시스템 방화벽 -> 고급 방화벽 -> iptables와 유사하다.(특정 프로그램 / 특정 포트를 대상으로 한다.)
- defender(커널단...) -> selinux와 유사하다.
- 직접 설치 : 백신 / 키로그방지 / 브라우저 자체 방화벽
- 방화벽 모듈 --> WAF ---> CATLE / Web Knight / Snort
/ 리눅스 방화벽
- selinux(커널단 방화벽)
> enforcing : 활성화
> permissive : 비활성화
> disabled : 꺼짐
> 명령 : setenforce / getenforce / setbool
- iptables : port / service 단위 등록 / Network + rich rule(기본 룰 + 추가 옵션)
- RHEL --> firewalld
ex) firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="14.36.28.128/25" port protocol="tcp" port="22" accept'
- Ubuntu ---> ufw
ex) ufw allow from 10.0.2.15 to any port 9666
- 최신형 nftable(nework filter tables)
> iptables, ip6tables, arptables 기능을 모두 포함하는 tool 입니다.
- tcpwrapper ---> 서비스단에 전달되기 직전 방화벽
/ rich rule
- ACCEPT tcp -- 14.36.28.128/25 anywhere tcp dpt:9200
- iptables -L
- iptables -A INPUT -p tcp -s SRC.IP --sport SRC.PORT -d DEST.IP --dport DEST.PORT -j ACEEPT
- -A : append : 정책을 추가할꺼야~
-j : 정책 ---> 1. DROP 2. ACCEPT 3. REJECT 4. LOG 5. RETURN |
-A : 새로운 규칙을 추가한다. (--append) -D : 규칙을 삭제한다. (--delete) -C : 패킷을 테스트한다. (--check) -I : 새로운 규칙을 삽입한다. (--insert) * -A와 다른점은 -A는 아무런 규칙이 없는 상태에서 추가를 하는 것이고 -I 옵션은 규칙이 생성된 상태에서 삽입한다는 의미이다. -R : 새로운 규칙으로 교체한다. (--replace) -L : 새로운 규칙을 출력한다. (--list) -F : 체인의 모든 규칙을 삭제한다. (--flush) -Z : 모든 체인의 패킷과 바이트 카운터 값을 0으로 만든다. (--zero) -N : 새로운 체인을 만든다. (--new) -X : 체인을 삭제한다. (--delete-chain) -P : 기본정책을 변경한다. (--policy) |
-p : 패킷의 프로토콜의 포트번호 또는 이름을 명시한다. (--proto) (ex: tcp, udp, 21, 22) -s : 패킷의 발신지를 명시한다. (--source) -d : 패킷의 도착지를 명시한다. (--destination) -i : 규칙을 적용할 인터페이스 이름을 명시한다. (--in-interface) -j : 규칙에 맞는 패킷을 어떻게 처리할 것인가를 명시한다. (--jump) -y : 접속 요청 패킷인 SYN패킷을 허용하지 않는다. (--syn) -f : 두 번째 이후의 패킷에 대해서 규칙을 명시한다. (--fragment) -m : 특정 모듈과의 매치 (--match) |
/ 예제
iptables -A INPUT -p tcp -m tcp --dport 80 -j --syn DROP |
iptables -A INPUT -p tcp -s 192.168.0.0/24 -d 192.168.0.10 --dport 80 -j DROP |
ssh 서비스로 60초간 10번의 접속 시도가 발생하면 DROP iptables -I INPUT -p tcp --dport 22 -m state NEW -m recent --update --seconds 60 --hitcount 10 -j DROP |
firewall-cmd --list-all |
firewall-cmd --permanent --add-port=443/tcp firewall-cmd reload |
ufw status |
ufw allow tcp/80 |
nftables ---> iptables로 구성된 설정 ---> 변환 적용 가능 (iptables-translate) |
최신 도커를 올리는 경우 실행할 때 추가 옵션이 필요한 경우 있음 --iptables=false |
/ 서버 입장에서 가장 성가신 부분
- DOS 공격 : icmp
- 기본적인 보안 세팅 : icmp_echo_ignore
- cd /proc/sys/net/ipv4
- cat icmp_echo_ignore_all
> 0 : disable
> 1 : enable
- 핑 응답을 하지 않도록 설정 : echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
> Netdiscovery를 방지 할 수 있다.
/ 취약점 (분석) 명령어
- 현재 실행중인 프로세스 확인 : ps -ef
- 마지막 접속 정보 확인 : last
- 현재 접속중인 사용자 : w / who
/ Set UID : (권한제어)
- 접근제어
> superuser만 사용할 수 있는 디렉터리 : /sbin
> 일반계정도 사용할 수 있는 디렉터리 : /bin
- find / -user root -perm -4000 -print > 4000_perm.txt
> 현재 상태 : 백도어가 없는 클린 상태 4000_perm.txt
- find / -user root -perm -4000 -print > 4000_perm_1.txt
- diff 4000_perm.txt 4000_perm_1.txt
root@Centos7:~/tmp# find / -user root -perm -4000 -print > 4000_perm.txt find: ‘/proc/130270/task/130270/fd/5’: 그런 파일이나 디렉터리가 없습니다 find: ‘/proc/130270/task/130270/fdinfo/5’: 그런 파일이나 디렉터리가 없습니다 find: ‘/proc/130270/fd/6’: 그런 파일이나 디렉터리가 없습니다 find: ‘/proc/130270/fdinfo/6’: 그런 파일이나 디렉터리가 없습니다 root@Centos7:~/tmp# find / -user root -perm -4000 -print > 4000_perm_1.txt find: ‘/proc/130389/task/130389/fd/5’: 그런 파일이나 디렉터리가 없습니다 find: ‘/proc/130389/task/130389/fdinfo/5’: 그런 파일이나 디렉터리가 없습니다 find: ‘/proc/130389/fd/6’: 그런 파일이나 디렉터리가 없습니다 find: ‘/proc/130389/fdinfo/6’: 그런 파일이나 디렉터리가 없습니다 root@Centos7:~/tmp# diff 4000_perm.txt 4000_perm_1.txt root@Centos7:~/tmp# |
sticky (4000)으로 설정된 추가파일이 없음 |
/ 백도어 설치 여부 점검
- /dev, /tmp 체크 : 기본적으로 디렉토리 퍼미션에 sticky가 붙어있다.
/ rootkit 탐색
- find /dev -type f -exec ls -l {} \;
/ 무결성 검사
- tripwire : 파일의 변동 사항 유무 체크
- wget https://src.fedoraproject.org/repo/pkgs/tripwire/tripwire-2.3.1-2.tar.gz/6a15fe110565cef9ed33c1c7e070355e/tripwire-2.3.1-2.tar.gz
/ 포트 스캔
- 열려있는 포트 및 응답 가능한 포트 점검 : 좀비PC 감염 여부
- 자신의 시스템에서 netstat -atp | grep LISTEN
/ 외부 호스트의 포트 확인
- telnet IP port
/ for문
- 윈도우 DOS
for %i in (1,1,65534) do telnet 192.168.0.30 %i |
- 리눅스
for i in {55..59} > do > ping 192.168.0.%i -c 1 > done |
/ 시스템에서 열려있는 파일에 대한 정보를 출력
- lsof == list open files
- lsof | grep LISTEN
root@Centos7:~# lsof | grep LISTEN httpd 1646 root 4u IPv6 33965 0t0 TCP *:http (LISTEN) httpd 1646 root 6u IPv6 33969 0t0 TCP *:https (LISTEN) dovecot 1674 root 25u IPv4 32127 0t0 TCP *:pop3 (LISTEN) dovecot 1674 root 37u IPv4 32150 0t0 TCP *:imap (LISTEN) master 1893 root 13u IPv4 33403 0t0 TCP *:smtp (LISTEN) master 1893 root 92u IPv4 33489 0t0 TCP localhost:10025 (LISTEN) /usr/bin/ 2105 root 5u IPv4 32568 0t0 TCP localhost:783 (LISTEN) /usr/sbin 2328 amavis 5u IPv4 35298 0t0 TCP localhost:10024 (LISTEN) httpd 2329 apache 4u IPv6 33965 0t0 TCP *:http (LISTEN) httpd 2329 apache 6u IPv6 33969 0t0 TCP *:https (LISTEN) spamd 2341 root 5u IPv4 32568 0t0 TCP localhost:783 (LISTEN) /usr/sbin 2343 amavis 5u IPv4 35298 0t0 TCP localhost:10024 (LISTEN) 프로세스명 PID 프로세스 소유자 프로토콜 버전 TCP/UDP 여부 현재 응답 가능 여부 |
/ pstree
- 최상위가 systemd이면 최소 centos7이다.
/ top
- top -d2
102일차 - ISMS-P (0) | 2023.03.14 |
---|---|
101일차 - 보안가이드라인 (0) | 2023.03.09 |
99일차 - 보안가이드라인 (0) | 2023.03.07 |
98일차 - 보안가이드라인 (0) | 2023.03.07 |
97일차 - 이더채널 (0) | 2023.03.03 |
ISO : 국제 표준 기구 보안과 관련된 사항을 정리 ----> ISO 2700X 패밀리 : 최소한... --> 27001 정보보호관리체계 ===> ISMS 처벌 규정이 존재하지 않는다. ---> 다만 국제 정보처리 과정 : ISMS 인증을 받은 기관끼리만 정보 교류가 가능하다. 개인정보보호관리체계 ---> PIMS. 정부기관 정보보호관리체계 ---> G-ISMS KISA ---> ISMS + P-ISMS ===> ISMS-P ISMS ----> 1. 물리적 보안 ---> 캡스 (접근제어 : 인간) 2. 기술적 보안 ----> 보안 담당자 3. 관리적 보안 ----> ISMS 의 집중사항 : 보안 책임자 유럽 : GDPR --> 보안 가이드 + 처벌 국제 : ISMS 한국 : ISMS-P 기술적 보안 ---> 시스템 (주정통) --- 1. Linux 계열 2. 윈도우 계열 #3. ARM <--- 산업용 제외 3. 보안위협 / 취약점 점검 / 보안관리 ===> 서버 / 네트워크 관제 <--- OP : 운영관리 OK 모니터링 : OUT 보안 관제 ---> 분석 ---> 평가 / 취약점 점검 ---> CERT 네트워크 (주정통) --- 1. 계층별 패킷 분석(L1 ~ L4) 2. 네트워크 장비 (스위치 / 라우터) 3. 네트워크 보안 장비 (IPS / IDS) ---> ESM --> SIEM 어플리케이션 --- 1. DB 2. APP (어플리케이션) -- 1. 모바일 2. Web 3. WAS 보안법규 --- 1. 개인정보 2. 안전조치 ----------> CERT 3. 사고 사례 1. 시스템 -- 윈도우 / 리눅스 윈도우 ---> POST 과정 1. 전원 켜기 2. post(POWER ON SELF TEST) ㄴ ROM -> 저장된 BIOS 프로그램 작동 -> BIOS 설정된 하드웨어의 장비가 이상이 없는지 체크 -> (이상 발생 시 소리) 1. 메인보드 전원 확인 2. CPU 확인 3. 그래픽카드 확인 4. RAM 체크 =============== 기본 장비엔 이상이 없음. ===================== 3. MBR(Master Boot Recoder) 읽기 BIOS에 설정된 부팅 순서에 따라 MBR : Boot Loader ----> NTLDR : XP 이하 BOOTMGR 저장소에 있는 부팅 이미지를 메모리에 상주 시킨다. ---> 부팅과 관련된 설정 정보 ---> 멀티 부팅이 가능하다. 정보 : BIOS가 갖고 있는 정보 + 윈도우 (프로필)에 등록된 정보보 winload.exe : *** Ntoskrnl.exe / hal.dll 실행 => 레지스트리에 등록되어 있는 시스템 설정정보를 읽어서 하드웨어 관련 드라이브 로딩 => 로그온 화면 출력 4. 로그인 ----> 단독 그룹 ---> Local 프로필 ----> 도메인 ----> 도메인안에 있는 프로필 실습 cmd <--- 도스 명령어 도스 명령어 for %i in (1,1,5) do echo %i for /L %i in (1,1,5) do echo %i 파이썬 코드 for i in range(1,6,1): print(i) 세상에서 제일 쉬운 브루트 포스 공격 대상 서버 : 192.168.0.160 <-- 공유폴더 : smb 계정을 사용한다. 패스워드 : 4자리의 숫자를 사용한다. 1234 공유폴더이름 : /share 공유폴더 접근을 위한 명령어 net use \\192.168.0.160\share /USER:smb 1234 C:\Users\kitri>net use \\192.168.0.160\share /USER:smb 1234 시스템 오류 86이(가) 생겼습니다. 지정된 네트워크 암호가 맞지 않습니다. ID는 맞으나 비밀번호가 틀림. for /L %i in (1230,1,1235) do net use \\192.168.0.160\share /USER:smb %i C:\Users\kitri>net use \\192.168.0.160\share /USER:smb 1233 시스템 오류 86이(가) 생겼습니다. 지정된 네트워크 암호가 맞지 않습니다. C:\Users\kitri>net use \\192.168.0.160\share /USER:smb 1234 명령을 잘 실행했습니다. C:\Users\kitri>net use \\192.168.0.160\share /USER:smb 1235 시스템 오류 1219이(가) 생겼습니다. 동일한 사용자가 둘 이상의 사용자 이름으로 서버 또는 공유 리소스에 다중 연결할 수 없습니다. 서버나 공유 리소스에 대한 이전 연결을 모두 끊고 다시 시도하십시오. C:\Users\kitri>net use \\192.168.0.160\share /USER:smb 1234 명령을 잘 실행했습니다. 패스워드 : 1234 임을 알 수 있다. 주정통의 설정값 -----> 로컬보안정책 : 수동으로 확인 자동화 ---> 보안템플릿 내보내기 로컬 보안 정책 > 동작 > 정책 내보내기 https://docs.microsoft.com/ko-kr/windows-server/administration/windows-commands/secedit-export secedit-export secedit /export /cfg 실행 명령 export 위치 : C:\Users\kitri\Desktop export 파일명 : kong.inf secedit /export /cfg C:\Users\kitri\Desktop\kong.inf 분기 ----> 1. kong.inf을 이용해 취약성 점검 2. 취약성 점검을 통해 알아낸 취약성 보완 secedit /import /cfg C:\Users\kitri\Desktop\kong.inf * SID : 보안 식별자 / UID *S-1-5-32-544 ===> SID : 계정 확인 === 위에선 보안 탬플릿을 통해 보안 정책을 확인 / 수정 === 특정 계정에 대한 정보를 확인 net user smb C:\Users\kitri>net user smb 사용자 이름 smb 전체 이름 smb 설명 사용자 설명 국가/지역 코드 000 (시스템 기본값) 활성 계정 예 계정 만료 날짜 기한 없음 마지막으로 암호 설정한 날짜 2022-05-25 오전 11:05:55 암호 만료 날짜 기한 없음 암호를 바꿀 수 있는 날짜 2022-05-25 오전 11:05:55 암호 필요 예 사용자가 암호를 바꿀 수도 있음 아니요 허용된 워크스테이션 전체 로그온 스크립트 사용자 프로필 홈 디렉터리 최근 로그온 아님 허용된 로그온 시간 전체 로컬 그룹 구성원 *Users 글로벌 그룹 구성원 *없음 명령을 잘 실행했습니다. inp = input("계정명:") print("net user " + inp + " >> " + inp + ".txt") filename = inp + ".txt" f = open(filename, "a") data = f.readlines() 계정 생성 net user kkk /add C:\WINDOWS\system32>net user kkk /add 명령을 잘 실행했습니다. C:\WINDOWS\system32>net user kkk 사용자 이름 kkk 전체 이름 설명 사용자 설명 국가/지역 코드 000 (시스템 기본값) 활성 계정 예 계정 만료 날짜 기한 없음 마지막으로 암호 설정한 날짜 2023-03-07 오전 9:48:41 암호 만료 날짜 2023-04-18 오전 9:48:41 암호를 바꿀 수 있는 날짜 2023-03-07 오전 9:48:41 암호 필요 예 사용자가 암호를 바꿀 수도 있음 예 허용된 워크스테이션 전체 로그온 스크립트 사용자 프로필 홈 디렉터리 최근 로그온 아님 허용된 로그온 시간 전체 로컬 그룹 구성원 *Users 글로벌 그룹 구성원 *없음 명령을 잘 실행했습니다. 계정 삭제 net user kkk /delete C:\WINDOWS\system32>net user kkk /delete 명령을 잘 실행했습니다. 계정의 권한 확인 C:\WINDOWS\system32>net accounts ? 이 명령에 대한 구문: NET ACCOUNTS [/FORCELOGOFF:{minutes | NO}] [/MINPWLEN:length] [/MAXPWAGE:{days | UNLIMITED}] [/MINPWAGE:days] [/UNIQUEPW:number] [/DOMAIN] C:\WINDOWS\system32>net accounts 만료 시간이 지난 얼마 후에 강제 로그오프하시겠습니까?: 아님 최소 암호 사용 기간 (일): 0 최대 암호 사용 기간 (일): 42 최소 암호 길이: 0 암호 기록 개수: 없음 잠금 임계값: 아님 잠금 기간 (분): 30 잠금 관찰 창 (분): 30 컴퓨터 역할: WORKSTATION 명령을 잘 실행했습니다. |
/ spawn
- 별도의 프로세스로 움직이는 애들
/ runas
- spawn ---> 하위 프로세스를 생성 ---> fork
- 파이썬 -> 브라우저 실행
- runas /user:kitri notepad.exe
- runas /user:kitri "notepad.exe \"aaa.txt\""
- 다른 계정을 이용해서 커맨드 실행이 가능하다
/ 실습
- 현재 자신이 접속한 계정 : kitri
> cmd(관리자 권한 실행)
- 현재 접속한 자신의 계정 정보 확인
> query session
- runas /user:administrator "notepad.exe \"C:\Users\kitri\Desktop\시스템.txt\""
/ 방화벽 해제
- netsh advfirewall set allprofiles state off
/ 방화벽 제어
- 특정 포트를 열어준다.
- 445번 포트
- 이터널 블루 취약점
- smb취약점(MS17-010)
- netsh advfirewall firewall add rule name="tcp-445" dir=in action=allow protocol=tcp localport=445
/ 원격데스크탑 허용
- 레지스트리 편집 (regedit)
- 컴퓨터\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fDenyTSConnections
- reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
/ 다른 컴퓨터에 접속하는 방법
- net use \\192.168.0.160 /u:kitri
/ 특정 사용자 로그오프
- 다른 컴퓨터 사용자 확인 : query session /server:localhost
- 다른 컴퓨터 사용자 확인 : query session /server:192.168.0.160
- 로그오프 : logoff /server:192.168.0.160 세션ID
> logoff /server:192.168.0.160 2
/ 주요정보통신기반시설
- 기술적 취약점 분석/평가 방법 상세가이드를 참고하여 체크한다.
- 파이썬을 사용하여 자동으로 검사하도록 만들어보자.
101일차 - 보안가이드라인 (0) | 2023.03.09 |
---|---|
100일차 - 보안가이드라인 (0) | 2023.03.08 |
98일차 - 보안가이드라인 (0) | 2023.03.07 |
97일차 - 이더채널 (0) | 2023.03.03 |
96일차 - 본딩 (0) | 2023.03.02 |