We have a commutative diagram ($B(...)$ denotes the image and $Z(...)$ denotes the kernel):
$$\begin{matrix}& &A_p/B(A_p)&\overset{f}{\longrightarrow}&B_p/B(B_p)&\overset{g}{\longrightarrow} & C_p/B(C_p)&\longrightarrow&0\\
& &\delta_A\downarrow& & \delta_B\downarrow & & \delta_c\downarrow & & \\
0& \longrightarrow & Z(A_{p-1})&\overset{f}{\longrightarrow}& Z(B_{p-1})& \overset{g}{\longrightarrow} & Z(C_{p-1})\end{matrix}$$
The rows are exact. Recognize that $B_p/B(B_p)\overset{g}{\longrightarrow}C_p/B(C_p)$ is onto because $B_p\to C_p$ is. Also $f|_{Z(A_{p-1})}$ is injective, because $f$ is. Calculate the exactedness in $B_p/B(B_p)$ and in $Z(B_p)$ by diagram-chasing. Then use the Snake-lemma and get an exact sequence
$$\ker(\delta_A)\to\ker(\delta_B)\to\ker(\delta_C)\overset{\partial}\longrightarrow coker(\delta_A)\to coker(\delta_B)\to coker(\delta_C),$$
where $\partial$ is functorial (the connecting homomorphism). Consider
$$Z(A_p)/B(A_p)\to Z(B_p)/B(B_p)\to Z(C_p)/B(C_p)\to Z(A_{p-1})/B(A_{p-1})\to Z(B_{p-1})/B(B_{p-1})\to Z(C_{p-1})/B(C_{p-1})$$
with $Z(A_p)/B(A_p)=H_p(A)$, $Z(B_p)/B(B_p)=H_p(B)$ etc.
So the naturality and homomorphism property comes from the snacke lemma.