1.갑자기 cpu 사용률이 높아짐
2.실행하지 않은 프로세스가 구동되는것을 발견
3.그 프로그램은 채굴 프로그램이였음
4.설치한적이 없으니 서버가 해킹당한것으로 판단
5./tmp/javax 라는 디렉토리에서 sshd2 라는 프로그램이 실행됐고 이 프로그램이 채굴 프로그램임
strace는 이미 실행됐을 때 그 프로세스를 디버깅 하는거기 때문에 strace로는 분석이 불가능한것으로 판단
따라서 sysdig로 어떤 경로로 들어온건지 침해사고 분석을 해보자.
1./tmp/javax 디렉토리에 악성파일이 생성/실행 되는거니까 이 디렉토리를 기준으로 sysdig
ㄴ또는 /tmp/javax/sshd2 가 실행되는거니까 이 파일을 기준으로 하는것도 도움이 될듯하다. 하지만 sshd2가 실행되면 cpu 자원을 거의 다 잡아먹기 때문에 sshd2는 퍼미션 000으로 주고 수정도 안되게끔 immutable 해놓은 상태이다.
[root@localhost ~]# sysdig fd.name contains /tmp/javax -w /root/sysdig.txt &
[1] 15994
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# ps -ef | grep 15994
root 15994 15215 15 14:10 pts/1 00:00:00 sysdig fd.name contains /tmp/javax -w /root/sysdig.txt
좀 있다 확인해보니 아래와 같은 로그들이 쌓여있다.
8526754 16:30:01.519760827 7 (24369) < open fd=5 name=javax(javax) flags=5185(O_DIRECTORY|O_NONBLOCK|O_RDONLY|O_CLOEXEC) mode=0 dev=802
8526755 16:30:01.519764268 7 (24369) > fchdir fd=5
8526756 16:30:01.519764853 7 (24369) < fchdir res=0
8526757 16:30:01.519765611 7 (24369) > getdents fd=5
8526758 16:30:01.519769890 7 (24369) < getdents res=160
8526759 16:30:01.519771972 7 (24369) > getdents fd=5
8526760 16:30:01.519772426 7 (24369) < getdents res=0
8526761 16:30:01.519773239 7 (24369) > close fd=5
8526762 16:30:01.519774769 7 (24369) < close res=0
10671620 17:00:01.782017001 12 sshd (24528) < open fd=5(
pipe:[29129900]) name=javax(/javax) flags=5185(O_DIRECTORY|O_NONBLOCK|O_RDONLY|O_CLOEXEC) mode=0 dev=802
10671621 17:00:01.782019569 12 sshd (24528) > fchdir fd=5(
pipe:[29129900])
10671622 17:00:01.782019965 12 sshd (24528) < fchdir res=0
10671623 17:00:01.782020603 12 sshd (24528) > getdents fd=5(
pipe:[29129900])
10671624 17:00:01.782023743 12 sshd (24528) < getdents res=160
10671625 17:00:01.782025437 12 sshd (24528) > getdents fd=5(
pipe:[29129900])
10671626 17:00:01.782025746 12 sshd (24528) < getdents res=0
10671627 17:00:01.782026366 12 sshd (24528) > close fd=5(
pipe:[29129900])
10671628 17:00:01.782027341 12 sshd (24528) < close res=0
12728508 17:30:01.294747116 2 (2681) < open fd=5 name=javax(javax) flags=5185(O_DIRECTORY|O_NONBLOCK|O_RDONLY|O_CLOEXEC) mode=0 dev=802
12728509 17:30:01.294750623 2 (2681) > fchdir fd=5
12728510 17:30:01.294751237 2 (2681) < fchdir res=0
12728511 17:30:01.294751981 2 (2681) > getdents fd=5
12728512 17:30:01.294756100 2 (2681) < getdents res=160
12728513 17:30:01.294758160 2 (2681) > getdents fd=5
12728514 17:30:01.294758765 2 (2681) < getdents res=0
12728515 17:30:01.294759540 2 (2681) > close fd=5
12728516 17:30:01.294760864 2 (2681) < close res=0