Finding subgroups to special groups

Let $G$ and $H$ be groups. Is there any possibility to find all (normal) subgroups of $G\times H$ and $G*H$?

I really hope that this task is easier, if $G$ and $H$ are cyclic groups.

I tried to find all subgroups using: if $G'< G$ and $H'< H$ then so is $G'\times H'< G\times H$, but I think, that these groups are not all, i.e. consider $G=\mathbb{Z}$ and $H=\mathbb{Z}_2$, then there is the subgroup in the cartesian product, which is generated by (a,b) where $a$ is a geneator of $G=\mathbb{Z}$ and $b$ is the generater of $H=\mathbb{Z}_2$. But this group can't be written as $G'\times H'$ as above.

I try to solve this problem, because I'm studying all coverings to a given topological space via the fundamental group and Galois correspondence, so it would be much more easier, if I would know

1. How many subgroups are there (How many of them are normal)?
2. How do they look like? Is it just a combination of generators or what is the "magic" of subgroups?
-
It's worth noting that cyclic groups are abelian, direct products of abelian groups are again abelian, and every subgroup of an abelian group is normal. – Cameron Buie Jul 31 '13 at 14:11
A free product of finite groups has a free subgroup of finite index, so there are lots of normal subgroups, and it would not be feasible to try and describe them all. Indeed, any group (finite or infinite) that is generated by two elements of finite orders $m$ and $n$ gives rise to a normal subgroup of $C_m * C_n$. – Derek Holt Jul 31 '13 at 14:28